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

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

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

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

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

Еще один, который я нашел в Evelina Vrabie's blog , использовал его и отлично работал!

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

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


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

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

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

CustomGauge

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

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

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

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

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

  

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

 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() {} }; } 

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

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

  1. Создайте папку с ресурсами в нашем проекте – посмотрите эту ссылку, и вы увидите, как создать папку с активами, если кто-то не знает об этом.
  2. Следующий, у вас есть дизайн html-страницы о том, как выглядит ваша страница sholud, например eg-header, no.of guages ​​и т. Д. … и поместить ее в ресурс папки.
  3. Есть много сайтов, которые предоставляют такие способы, как « Это один сайт», или вы можете просматривать другие сайты и принимать все, что вам нравится … !! возьмите все, включая файлы .js, и поместите их в папку с активами.
  4. Android предоставляет class для обработки webiview под названием «WebViewClient», который вы можете просмотреть больше, чтобы узнать больше об этом в Интернете
  5. Это пример кода для просмотра содержимого webview.

    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); } } 

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

  1. Вы также можете отправлять данные с активности на страницу html .. См. Эту ссылку

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

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

github.com/Pygmalion69/Gauge

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

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

 repositories { maven { url 'https://www.jitpack.io' } } dependencies { compile 'com.github.Pygmalion69:Gauge:1.1' } 

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

  -  

Вот пример программной настройки значений:

  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); 

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

ScComponents

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

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

Перейдите по вышеуказанному сайту. Нажмите GR004 и после появления всплывающего windows нажмите «Загрузить бесплатно». Библиотека загрузит, распакует и выполнит инструкцию по установке библиотеки (aar-файла) в вашем проекте Android.

Напишите этот код в вашем XML-макете, и ваш указатель сделает:

  

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

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

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

  • Обнаружение события касания при просмотре при перетаскивании с другого вида
  • Есть ли простой способ добавить границу к верхней и нижней части Android View?
  • Получить целенаправленный вид из ViewPager
  • getActionView () моего MenuItem возвращает null
  • В чем разница между LayoutOptions Xamarin.Form, особенно Fill и Expand?
  • Пользовательский макет Android - onDraw () никогда не вызывается
  • Заменить fragment внутри ViewPager
  • Interesting Posts

    Как установить параметры Интернета для эмулятора Android?

    Установка и получение переменных окружения Windows из командной строки?

    Как преобразовать подкаст в аудиокнигу / музыкальный трек в iTunes?

    Есть ли способ, с помощью которого программа C / C ++ может сбой перед main ()?

    find: отсутствующий аргумент для -exec

    Каковы минимальные требования для запуска Windows 10?

    Почему ContentResolver.requestSync не вызывает синхронизацию?

    HasManyThrough с отношением «один ко многим»

    Что такое использование Curly Braces в заявлении импорта ES6

    Почему операция сдвига влево вызывает Undefined Behavior, когда левый операнд имеет отрицательное значение?

    Установка на физическом диске с помощью VirtualBox / Windows

    Лучший способ использования StructureMap для реализации шаблона страtagsи

    Пара Bluetooth-устройств на компьютер с 32-битной библиотекой .NET Bluetooth

    Как прочитать весь файл в строке с помощью C #?

    Необходимо переустановить Windows XP Professional, но больше не имеете CD

    Давайте будем гением компьютера.