中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Android實現數字跳動效果的TextView方法示例

發布時間:2020-09-15 17:00:03 來源:腳本之家 閱讀:276 作者:Android技術之家 欄目:移動開發

前言

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

它具有以下幾點特性:

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

效果圖如下

Android實現數字跳動效果的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);//設置顯示內容 
 dnv.setDuration(duration);//設置完成跳動的持續時長(單位ms) 
 dnv.setFormat(format);//設置數字的顯示格式 
 dnv.dance();//啟動效果,開始數字跳動 

關鍵代碼

/** 
* 文本中的數字開始跳動 
 
*/ 
 
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(); 
 
} 
 
/** 
 
* 獲取算數因子 
 
* @return 算數因子 
 
*/ 
 
public float getFactor() { 
 
return factor; 
 
} 
 
/** 
 
* 設置算數因子,為ObjectAnimator調用 
 
* @see ObjectAnimator 
 
* @param factor 算數因子 
 
*/ 
 
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); 
 
} 

總結

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

向AI問一下細節

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

AI

攀枝花市| 遵义县| 招远市| 滦南县| 叶城县| 普宁市| 湖口县| 沧源| 富民县| 大方县| 白山市| 揭阳市| 石泉县| 柘荣县| 马山县| 积石山| 武清区| 成武县| 岐山县| 金秀| 磴口县| 恩施市| 惠州市| 彝良县| 黔西| 融水| 蒲城县| 陇西县| 普格县| 宁乡县| 黄浦区| 大埔区| 福贡县| 长泰县| 澜沧| 镇平县| 海林市| 喀什市| 揭阳市| 新平| 上犹县|