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

首頁 > 系統 > Android > 正文

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

2019-10-23 18:30:31
字體:
來源:轉載
供稿:網友

前言

本文介紹的是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/212995.html">android/213419.html">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開發者們能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大荔县| 巩义市| 津南区| 桂阳县| 屏山县| 澄城县| 汉沽区| 阿克陶县| 娱乐| 安新县| 绥阳县| 永靖县| 普兰县| 普定县| 大庆市| 富民县| 东海县| 利川市| 隆回县| 高陵县| 中西区| 博客| 娱乐| 贵定县| 陆川县| 临沭县| 福建省| 德清县| 碌曲县| 长寿区| 灵川县| 大安市| 海兴县| 井冈山市| 罗源县| 民县| 宾阳县| 顺昌县| 库伦旗| 灯塔市| 通榆县|