Простой вид калибра, такой как speedmeter в android?
Я хочу иметь простой вид калибра, где я буду определять начальное значение и конечное значение и иметь указатель для отображения данного значения переменной.
![enter image description here]()
Итак, я могу показать заданное значение, например, speedmeter. Например, если мое значение textView равно 1300, то рядом с текстовым представлением я хочу, чтобы эта пользовательская анимация просмотра метра понравилась!
Возможно? Любой существующий пример кода?
Ответы
Ответ 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" />