国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

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

2019-12-12 03:00:57
字體:
來源:轉載
供稿:網友

前言

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

它具有以下幾點特性:

  • 自動獲取文本中的所有數字,并同時開始跳動,免去多個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("http://d+(//.//d+)?");  Matcher matcher=pattern.matcher(text);  while (matcher.find()){  numbers.add(Float.parseFloat(matcher.group()));  }  textPattern = text.replaceAll("http://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開發者們能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巴青县| 长乐市| 正镶白旗| 宣化县| 绥宁县| 新建县| 拉孜县| 南安市| 中山市| 古蔺县| 嘉鱼县| 衡山县| 调兵山市| 泽州县| 武鸣县| 修水县| 内丘县| 宜章县| 宝清县| 静宁县| 岑溪市| 石首市| 岳池县| 纳雍县| 色达县| 香港 | 安多县| 萨迦县| 马尔康县| 古田县| 本溪市| 修水县| 宁化县| 盐池县| 从江县| 兰西县| 临沂市| 宣恩县| 宾川县| 顺义区| 巴彦淖尔市|