Простой вид калибра, такой как speedmeter в android? - программирование
Подтвердить что ты не робот

Простой вид калибра, такой как speedmeter в android?

Я хочу иметь простой вид калибра, где я буду определять начальное значение и конечное значение и иметь указатель для отображения данного значения переменной.

enter image description here

Итак, я могу показать заданное значение, например, speedmeter. Например, если мое значение textView равно 1300, то рядом с текстовым представлением я хочу, чтобы эта пользовательская анимация просмотра метра понравилась!

Возможно? Любой существующий пример кода?

4b9b3361

Ответ 1

Другой, который я нашел в Evelina Vrabie blog, использовал его и отлично работает!

Посмотрите Evelina Vrabie GitHub. Он имеет калибровочную библиотеку и некоторые образцы для взаимодействия с.

Большое спасибо владельцу Evelina Vrabie!


enter image description here

Однако он не работает с XHDPI/Few версиями Android-устройств (выше 4). Проблема заключается в тексте в виде шкалы.

Ответ 2

Для тех, кто ищет простой вид калибра, я создал библиотеку, которую вы можете клонировать и использовать/модифицировать для своих нужд.

CustomGauge

enter image description here

Ответ 3

Все другие датчики, которые вы рекомендовали, имеют ошибки и не работают нормально на Kitkat и Lollipop. Также здесь нет дружественной библиотеки Android Studio и gradle.

Здесь git repo для более поздней версии, обновленной для Lollipop, вы можете использовать с Gradle:

enter image description here

После включения библиотеки в проект добавьте gaugelibrary в xml-макет своей активности:

<io.sule.gaugelibrary.GaugeView
 android:id="@+id/gauge_view"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="#ffffff"
 gauge:showOuterShadow="false"
 gauge:showOuterRim="false"
 gauge:showInnerRim="false"
 gauge:needleWidth="0.010"
 gauge:needleHeight="0.40"
 gauge:scaleStartValue="0"
 gauge:scaleEndValue="100"
 />

Это покажет статическую калибровку без иглы. Чтобы создать иглу со случайной анимацией, вам нужно сделать это в файле класса активности. Посмотрите, как это делается здесь:

package io.sule.testapplication;

import android.app.Activity;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.Menu;
import android.view.MenuItem;

import java.util.Random;

import io.sule.gaugelibrary.GaugeView;

public class MainActivity extends Activity {
   private GaugeView mGaugeView;
   private final Random RAND = new Random();

   @Override
   protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);

      mGaugeView = (GaugeView) findViewById(R.id.gauge_view);
      mTimer.start();
   }


   private final CountDownTimer mTimer = new CountDownTimer(30000, 1000) {

      @Override
      public void onTick(final long millisUntilFinished) {
         mGaugeView.setTargetValue(RAND.nextInt(101));
      }

      @Override
      public void onFinish() {}
   };
}

Это создаст экземпляр иглы и сделает анимацию движением к случайным значениям.

Ответ 4

Я сделал это некоторое время назад. Не стесняйтесь клонировать и изменять. (Требуются некоторые идеи из старого Vintage Thermometer.)

github.com/Pygmalion69/Gauge

введите описание изображения здесь

Его можно легко добавить в проект Gradle:

repositories {
    maven {
        url 'https://www.jitpack.io'
    }
}

dependencies {
    compile 'com.github.Pygmalion69:Gauge:1.1'
}

Представления объявляются в XML:

<de.nitri.gauge.Gauge
    android:id="@+id/gauge1"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_gravity="center"
    android:layout_marginTop="10dp"
    android:layout_weight="0.75"
    gauge:labelTextSize="42"
    gauge:maxValue="1000"
    gauge:minValue="0"
    gauge:totalNicks="120"
    gauge:valuePerNick="10"
    gauge:upperText="Qty"
    gauge:lowerText="@string/per_minute" />

Вот пример программного программирования значений:

    final Gauge gauge1 = (Gauge) findViewById(R.id.gauge1);
    final Gauge gauge2 = (Gauge) findViewById(R.id.gauge2);
    final Gauge gauge3 = (Gauge) findViewById(R.id.gauge3);
    final Gauge gauge4 = (Gauge) findViewById(R.id.gauge4);

    gauge1.moveToValue(800);

    HandlerThread thread = new HandlerThread("GaugeDemoThread");
    thread.start();
    Handler handler = new Handler(thread.getLooper());

    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            gauge1.moveToValue(300);
        }
    }, 2800);
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            gauge1.moveToValue(550);
        }
    }, 5600);

    HandlerThread gauge3Thread = new HandlerThread("Gauge3DemoThread");
    gauge3Thread.start();
    Handler gauge3Handler = new Handler(gauge3Thread.getLooper());
    gauge3Handler.post(new Runnable() {
        @Override
        public void run() {
            for (float x = 0; x <= 6; x += .1) {
                float value = (float) Math.atan(x) * 20;
                gauge3.moveToValue(value);
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    });

    gauge4.setValue(333);

Ответ 5

Я не знаю, поможет ли поздний ответ или нет. Я также пришел к той же ситуации, когда я хочу использовать датчик для визуализации данных, поскольку калибр не указан как виджет в андроиде, так как энтузиаст я пошел на библиотеки, подобные выше, которые можно найти через различные ссылки в Интернете, хотя это был весьма полезен (благодаря замечательным его авторам). Мне трудно представить себе ситуацию во время определенных ситуаций, поэтому другое решение, которое я сделал для моего приложения, - это интегрировать JavaScript-инструменты в мое приложение для Android. Вы можете сделать это с помощью следующих шагов

  • Создайте папку с ресурсами в нашем проекте посмотрите эту ссылку, и вы увидите, как создать папку с активами, если кто-то не знает об этом.
  • Далее у вас есть дизайн html-страницы о том, как выглядит ваша страница sholud, например eg-header, no.of guages ​​и т.д.... и поместить ее в ресурс папки.
  • Есть много сайтов, которые предоставляют такие типы, как Это один сайт, или вы можете просматривать другие сайты и принимать все, что вам нравится..!! возьмите все, включая файлы .js, и поместите их в папку с активами.
  • Android предоставляет класс для работы с веб-браузером "WebViewClient" . Вы можете просматривать больше, чтобы узнать больше об этом в Интернете.
  • Это пример кода для просмотра содержимого веб-сайта.

    web = (WebView) findViewById (R.id.webview01);   progressBar = (ProgressBar) findViewById (R.id.progressBar1);

    web.setWebViewClient(new myWebClient());
    
      web.getSettings().setJavaScriptEnabled(true);
                web.post(new Runnable() {
                    @Override
                    public void run() {
                        web.loadUrl("file:///android_asset/fonts/guage.html");
                    }
                });
    

Вышеприведенный для загрузки html и javscript.

 public class myWebClient extends WebViewClient
{
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        // TODO Auto-generated method stub
        super.onPageStarted(view, url, favicon);
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        // TODO Auto-generated method stub
        progressBar.setVisibility(View.VISIBLE);
        view.loadUrl(url);
        return true;

    }

    @Override
    public void onPageFinished(WebView view, String url) {
        // TODO Auto-generated method stub
        super.onPageFinished(view, url);

        progressBar.setVisibility(View.GONE);
    }
}

Этот класс веб-просмотра

  • Вы также можете отправлять данные с активности на страницу html. Refer this link

Просьба прочитать все, исправления приветствуются.!!

Ответ 6

На этом сайте вы найдете несколько бесплатных настраиваемых датчиков.

ScComponents

Очень прост в установке и хорошо документирован. Например, вы можете бесплатно получить что-то подобное через 5 минут, следуя инструкциям ниже.

enter image description here

Перейти на вышеуказанный сайт. Нажмите GR004 и после появления всплывающего окна нажмите "Скачать БЕСПЛАТНО". Библиотека будет загружена, разархивирована и следуйте инструкциям по установке библиотеки (файл aar) внутри вашего проекта Android.

Запишите этот код в свой XML-макет, и ваша шкала будет готова:

<com.sccomponents.gauges.gr004.GR004
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

У вас есть много вариантов XML для его настройки:

  • sccAnimDuration
  • sccEnableTouch
  • sccInverted
  • sccFontName
  • sccLabelsSizeAdjust
  • sccMajorTicks
  • sccMaxValue
  • sccMinorTicks
  • sccMinValue
  • sccShowContour
  • sccShowLabels
  • sccText
  • sccValue

И связанная функция по кодированию.

Ответ 7

Используйте это: Пример проекта

Его легко добавить в ваш проект Gradle:

repositories {
    maven {
        url 'https://www.jitpack.io'
    }
}

dependencies {
implementation 'com.jignesh13.speedometer:speedometer:1.0.0'
}

Представления объявляются в XML:

    <com.jignesh13.speedometer.SpeedoMeterView
        android:id="@+id/speedometerview"
        android:layout_width="250dp"
        android:layout_height="250dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.453"
        app:layout_constraintStart_toStartOf="parent"
        app:backimage="@android:color/black"
        app:needlecolor="#fff"
        app:removeborder="false"
        app:linecolor="#fff"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.079" />