溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Android實現(xiàn)數(shù)字跳動效果的TextView方法示例

發(fā)布時間:2020-09-15 17:00:03 來源:腳本之家 閱讀:274 作者:Android技術(shù)之家 欄目:移動開發(fā)

前言

本文介紹的是Android如何實現(xiàn)數(shù)字跳動效果的TextView,主要運用了DancingNumberView,DancingNumberView是一個用于跳動顯示文本中數(shù)字的控件,繼承自TextView,這種控件一般用于顯示金額等對用戶較為敏感的數(shù)字,讓UI交互更加生動。

它具有以下幾點特性:

  • 自動獲取文本中的所有數(shù)字,并同時開始跳動,免去多個TextView拼接的麻煩
  • 支持數(shù)字按照自定義的格式顯示,例如限定只顯示小數(shù)點后兩位

效果圖如下

Android實現(xiàn)數(shù)字跳動效果的TextView方法示例

導入使用

Gradle

第1步,在project的build.gradle文件中適當位置添加

allprojects { 
 repositories { 
  ... 
  maven { url "https://jitpack.io" } 
 } 
} 

第2步,在app的build.gradle文件中適當位置添加依賴項

dependencies { 
  compile 'com.github.JianxunRao:DancingNumberView:V1.0.1' 
} 

使用方式

通過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"/> 

通過Java代碼

DancingNumberView dnv = (DancingNumberView) findViewById(R.id.dnv); 
 dnv.setText(text);//設(shè)置顯示內(nèi)容 
 dnv.setDuration(duration);//設(shè)置完成跳動的持續(xù)時長(單位ms) 
 dnv.setFormat(format);//設(shè)置數(shù)字的顯示格式 
 dnv.dance();//啟動效果,開始數(shù)字跳動 

關(guān)鍵代碼

/** 
* 文本中的數(shù)字開始跳動 
 
*/ 
 
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é)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對各位Android開發(fā)者們能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對億速云的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI