Android實(shí)現(xiàn)數(shù)字跳動(dòng)效果的TextView方法示例
前言
本文介紹的是Android如何實(shí)現(xiàn)數(shù)字跳動(dòng)效果的TextView,主要運(yùn)用了DancingNumberView,DancingNumberView是一個(gè)用于跳動(dòng)顯示文本中數(shù)字的控件,繼承自TextView,這種控件一般用于顯示金額等對(duì)用戶較為敏感的數(shù)字,讓UI交互更加生動(dòng)。
它具有以下幾點(diǎn)特性:
- 自動(dòng)獲取文本中的所有數(shù)字,并同時(shí)開(kāi)始跳動(dòng),免去多個(gè)TextView拼接的麻煩
- 支持?jǐn)?shù)字按照自定義的格式顯示,例如限定只顯示小數(shù)點(diǎn)后兩位
效果圖如下

導(dǎo)入使用
Gradle
第1步,在project的build.gradle文件中適當(dāng)位置添加
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
第2步,在app的build.gradle文件中適當(dāng)位置添加依賴項(xiàng)
dependencies {
compile 'com.github.JianxunRao:DancingNumberView:V1.0.1'
}
使用方式
通過(guò)XML布局
<me.trojx.dancingnumber.DancingNumberView android:id="@+id/dnv" android:layout_width="wrap_content" android:layout_height="wrap_content" app:dnv_duration="6000" app:dnv_format="%.2f"/>
通過(guò)Java代碼
DancingNumberView dnv = (DancingNumberView) findViewById(R.id.dnv); dnv.setText(text);//設(shè)置顯示內(nèi)容 dnv.setDuration(duration);//設(shè)置完成跳動(dòng)的持續(xù)時(shí)長(zhǎng)(單位ms) dnv.setFormat(format);//設(shè)置數(shù)字的顯示格式 dnv.dance();//啟動(dòng)效果,開(kāi)始數(shù)字跳動(dòng)
關(guān)鍵代碼
/**
* 文本中的數(shù)字開(kāi)始跳動(dòng)
*/
public void dance() {
text = getText().toString();
numbers=new ArrayList<>();
Pattern pattern = Pattern.compile("\\d+(\\.\\d+)?");
Matcher matcher=pattern.matcher(text);
while (matcher.find()){
numbers.add(Float.parseFloat(matcher.group()));
}
textPattern = text.replaceAll("\\d+(\\.\\d+)?",PLACEHOLDER);
numberTemp=new float[numbers.size()];
ObjectAnimator objectAnimator=ObjectAnimator.ofFloat(this,"factor",0,1);
objectAnimator.setDuration(duration);
objectAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
objectAnimator.start();
}
/**
* 獲取算數(shù)因子
* @return 算數(shù)因子
*/
public float getFactor() {
return factor;
}
/**
* 設(shè)置算數(shù)因子,為ObjectAnimator調(diào)用
* @see ObjectAnimator
* @param factor 算數(shù)因子
*/
public void setFactor(float factor) {
String textNow=textPattern;
this.factor = factor;
for (int i=0;i<numberTemp.length;i++){
numberTemp[i]=numbers.get(i)*factor;
textNow=textNow.replaceFirst(PLACEHOLDER,String.format(format,numberTemp[i]));
}
setText(textNow);
}
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)各位Android開(kāi)發(fā)者們能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Android開(kāi)發(fā)方式之Java+html+javascript混合開(kāi)發(fā)
這篇文章主要為大家詳細(xì)介紹了Android開(kāi)發(fā)方式的其中一種Java+html+javascript混合開(kāi)發(fā),感興趣的小伙伴們可以參考一下2016-06-06
Android編程實(shí)現(xiàn)TextView部分顏色變動(dòng)的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)TextView部分顏色變動(dòng)的方法,涉及Android針對(duì)TextView樣式操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
Android自定義有限制區(qū)域的圖例角度自識(shí)別涂鴉工具類完結(jié)篇
這篇文章主要為大家介紹了Android自定義有限制區(qū)域的圖例角度自識(shí)別涂鴉工具類完結(jié)篇,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
解決Android studio3.6安裝后gradle Download失敗(構(gòu)建不成功)
這篇文章主要介紹了解決Android studio3.6安裝后gradle Download失敗(構(gòu)建不成功),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
android在異步任務(wù)中關(guān)閉Cursor的代碼方法
android在異步任務(wù)中如何關(guān)閉Cursor?在我們開(kāi)發(fā)應(yīng)用的時(shí)候,很多時(shí)候會(huì)遇到這種問(wèn)題,下面我們就看看代碼如何實(shí)現(xiàn)2013-11-11
Android集成GreenDao數(shù)據(jù)庫(kù)的操作步驟
這篇文章主要介紹了Android集成GreenDao數(shù)據(jù)庫(kù),使用數(shù)據(jù)庫(kù)存儲(chǔ)時(shí)候,一般都會(huì)使用一些第三方ORM框架,比如GreenDao,本文分幾步給大家介紹Android集成GreenDao數(shù)據(jù)庫(kù)的方法,需要的朋友可以參考下2022-10-10

