我想要一個簡單的規範視圖,我將定義起始值和結束值,並有一個指針來顯示給定的變量值。簡單的衡量視圖像在android的速度計?
這樣我就可以顯示在給定值像速度表。例如,如果我的textView的值是1300,那麼在textview旁邊我想要這樣的自定義米視圖動畫!
有可能嗎?任何現有的示例代碼?
我想要一個簡單的規範視圖,我將定義起始值和結束值,並有一個指針來顯示給定的變量值。簡單的衡量視圖像在android的速度計?
這樣我就可以顯示在給定值像速度表。例如,如果我的textView的值是1300,那麼在textview旁邊我想要這樣的自定義米視圖動畫!
有可能嗎?任何現有的示例代碼?
另一個我發現在Evelina Vrabie's blog
,使用它,工作完美!
看看Evelina Vrabie's GitHub
。它有一個測量庫和一些與之交互的樣本。
非常感謝業主Evelina Vrabie!
但是它不在XHDPI/Android設備的幾個版本工作(以上4)。問題是規格視圖中的文本。
不錯的庫,但我只需要180度我怎麼接近那個 –
我用過你的庫,但它在所有'gauge:***'屬性中顯示錯誤。我添加了'xmlns:gauge =「http://schemas.android.com/apk/res-auto」'但仍然出現錯誤。 @pkleczko你能說出了什麼問題嗎? –
這是GPL授權,這是不可能的。 – lschuetze
你推薦所有其它儀表有錯誤和不運行的奇巧和棒棒糖罰款。此處也沒有Android Studio和Gradle友好的庫。
下面是最近多了一個更新的棒棒糖你可以用搖籃使用git回購:
後,您在您的項目庫中添加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() {}
};
}
這將實例化針並使其動畫移動到隨機值。
嘿@sulejman這個庫的minSdk版本設置爲21,這對我的應用程序來說有點太高了,所以當我用minSdk版本9將它導入到我的應用程序時,我可以在構建時收到合併錯誤,可以設置minSdk到更低版本還是提出解決方法? – user3677331
你可以自己設置它,但我不確定它是否會實際上使用9級,它認爲它從13開始工作,但是隻設置爲21.從git下載庫並玩弄:) –
can我們將負值應用於此GaugeView。我嘗試過,但沒有成功 –
我不知道遲到的答案是否會有所幫助。我也遇到了同樣的情況,我想用量表來顯示數據,因爲量表並不是作爲android中的小部件給出的,作爲一個喜歡上圖的圖書館的愛好者,可以通過互聯網上的各種鏈接找到它,儘管它是非常有幫助的(感謝美妙的作者..)我發現自己在某些情況下很難想象,所以我的另一個解決方案是我的應用程序是我將JavaScript量表集成到我的Android應用程序中。 你可以做到這一點通過以下步驟
這是查看視圖內容示例代碼..
網頁=(的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);
}
}
此web視圖類
通過所有敬請閱讀,更正歡迎.. !!
迂迴的方法,但仍然有效。儘管如此,在Android開發中,自定義視圖始終執行,並且看起來比web視圖中的HTML/JS更好 – mix3d
那麼,我是初學者,時間更少......感謝@ mix3d能夠詳細說明您的答案 – 2017-02-24 05:51:12
我前一陣子做了這個。隨意克隆和修改。 (這需要從舊Vintage Thermometer一些想法。)
它可以很容易地添加到您的搖籃項目:
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" />
她e是以編程方式設置數值的示例:
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);
非常感謝您節省我的時間..! –
那些視圖仍然有效?我在使用它時遇到以下錯誤:java.lang.NullPointerException at android.content.res.BridgeResources.getString(BridgeResources.java:501) at android.content.Context.getString(Context.java:334) at org .codeandmagic.android.gauge.GaugeView.readAttrs(GaugeView.java:224) at org.codeandmagic.android.gauge.GaugeView。(GaugeView。java:170) at org.codeandmagic.android.gauge.GaugeView。 (GaugeView.java:175) at ......... –
對我來說完美無缺! – oikonomopo