Android实现数字跳动效果的TextView方法示例
作者:Android技术之家 时间:2023-05-24 16:54:29
前言
本文介绍的是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("\\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