Android实现数字跳动效果的TextView方法示例

作者:Android技术之家 时间:2023-05-24 16:54:29 

前言

本文介绍的是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);

}

来源:http://mp.weixin.qq.com/s/OWVuFyOJsC2rlR8cBfPkdQ

标签:android,textview,数字跳动
0
投稿

猜你喜欢

  • Java网络编程之TCP通信完整代码示例

    2022-10-18 21:42:57
  • 详解房卡麻将分析系列 "牌局回放" 之 播放处理

    2022-12-26 08:54:27
  • C#控制台下测试多线程的方法

    2022-02-19 15:43:51
  • Linux系统中C语言编程创建函数fork()执行解析

    2023-06-21 01:10:03
  • C# 调用 JavaWebservice服务遇到的问题汇总

    2023-04-23 04:00:49
  • C#中foreach语句使用break暂停遍历的方法

    2022-10-12 20:14:11
  • SpringBoot通过源码探究静态资源的映射规则实现

    2022-03-26 19:05:53
  • java面试try-with-resources问题解答

    2023-09-03 15:08:01
  • C#直线的最小二乘法线性回归运算实例

    2022-05-03 11:19:33
  • Android程序开发之手机APP创建桌面快捷方式

    2023-04-01 06:55:49
  • Minio与SpringBoot使用okhttp3问题解决

    2021-06-25 19:17:08
  • Android登录注册功能 数据库SQLite验证

    2023-10-01 20:58:55
  • MyBatis在SQL语句中如何获取list的大小

    2021-08-15 12:09:55
  • 一文掌握Spring的创建与使用

    2022-01-24 19:28:38
  • Java如何设置系统参数和运行参数

    2023-12-19 10:47:01
  • Linux系统下安装和卸载JDK8的方式

    2023-08-01 15:29:45
  • 基于swing实现窗体拖拽和拉伸

    2023-11-12 22:32:40
  • Unity中协程IEnumerator的使用方法介绍详解

    2023-03-31 13:28:44
  • 图文精讲java常见分布式事务理论与解决方案

    2023-05-22 19:50:10
  • vscode设置Fira_Code字体及改变编辑器字体、背景颜色的代码详解

    2023-05-22 21:00:17
  • asp之家 软件编程 m.aspxhome.com