開始値と終了値を定義し、指定された変数値を表示するためのポインターを持つ単純なゲージビューが必要です。
だから私はスピードメーターのような与えられた値を示すことができます。たとえば、textViewの値が1300の場合、textviewの横に、このようなカスタムメータービューアニメーションが必要です。
可能です?既存のサンプルコードはありますか?
Evelina Vrabie's blog
、それを使用して完璧に動作しました!
見る - Evelina Vrabie's GitHub
。ゲージライブラリと対話するサンプルがあります。
オーナーのEvelina Vrabieに感謝します!
ただし、Androidデバイス(4以上)のXHDPI/Fewバージョンでは動作しません。問題はゲージビューのテキストです。
シンプルなゲージビューを探している人のために、必要に応じてクローンを作成して使用/変更できるライブラリを作成しました。
推奨される他のすべてのゲージにはバグがあり、KitKatおよびLollipopでは正常に動作しません。また、ここにはAndroid Studioおよびgradleフレンドリーなライブラリはありません。
Gradleで使用できるLollipop用に更新された最新のもののgitリポジトリを次に示します。
ライブラリをプロジェクトに追加した後、アクティビティのXMLレイアウトにgaugelibraryを追加します。
<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() {}
};
}
これにより、針がインスタンス化され、ランダムな値に移動するアニメーションが作成されます。
少し前にこれを作りました。クローンや修正をお気軽に。 (古い Vintage Thermometer からいくつかのアイデアを取ります。)
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分でこのようなものを無料で使用できます。
上記のリンクされたWebサイトにアクセスします。 GR004をクリックし、ポップアップが表示されたら、「Download for FREE」をクリックします。ライブラリがダウンロードされ、解凍され、指示に従ってライブラリ(aarファイル)をAndroidプロジェクト内にインストールします。
XMLレイアウトにこのコードを書くと、ゲージが完了します。
<com.sccomponents.gauges.gr004.GR004
Android:layout_width="match_parent"
Android:layout_height="match_parent" />
カスタマイズするための多くのXMLオプションがあります。
そして、コーディングによる関連機能。
遅い答えが助けになるかどうかはわかりません。ゲージはAndroidのウィジェットとして提供されていないため、ゲージを使用してデータを視覚化したいという同じ状況になりました。マニアとしては、インターネットのさまざまなリンクから見つけることができる上記のようなライブラリを探しましたが、非常に役に立ちました(素晴らしい作者のおかげです。)特定の状況で視覚化するのが難しいと感じたので、アプリのもう1つの解決策は、JavaScriptゲージをAndroid application。次の手順で実行できます
これは、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);
}
}
このwebviewクラス
親切にすべてを読んで、修正を歓迎します.. !!
これを使用してください: サンプルプロジェクト
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" />