最近因为工作需要高仿余额宝数字动画效果, 达到炫酷的数字动画效果,所以写出了分享给大家,有需要的朋友可以直接拿来用,下面一起来看看。
Android 是一种基于 Linux 的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由 Google 公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用 "安卓" 或 "安致"。
实现效果图:
下面是具体代码,可直接复制:
- package com.lcw.rabbit.widget;
- import android.animation.ObjectAnimator;
- import android.content.Context;
- import android.text.TextUtils;
- import android.util.AttributeSet;
- import android.view.animation.AccelerateDecelerateInterpolator;
- import android.widget.TextView;
- /**
- * 高仿余额宝数字动画
- * Create by: chenwei.li
- * Date: 2016-07-20
- * time: 11:52
- * Email: lichenwei.me@foxmail.com
- */
- public class CountNumberView extends TextView {
- //动画时长
- private int duration = 1500;
- //显示数字
- private float number;
- //显示表达式
- private String regex;
- //显示表示式
- public static final String INTREGEX = "%1$01.0f";//不保留小数,整数
- public static final String FLOATREGEX = "%1$01.2f";//保留2位小数
- public CountNumberView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
- /**
- * 显示带有动画效果的数字
- * @param number
- * @param regex
- */
- public void showNumberWithAnimation(float number, String regex) {
- if (TextUtils.isEmpty(regex)) {
- //默认为整数
- this.regex = INTREGEX;
- } else {
- this.regex = regex;
- }
- //修改number属性,会调用setNumber方法
- ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(this, "number", 0, number);
- objectAnimator.setDuration(duration);
- //加速器,从慢到快到再到慢
- objectAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
- objectAnimator.start();
- }
- /**
- * 获取当前数字
- * @return
- */
- public float getNumber() {
- return number;
- }
- /**
- * 根据正则表达式,显示对应数字样式
- * @param number
- */
- public void setNumber(float number) {
- this.number = number;
- setText(String.format(regex, number));
- }
- }
使用方法,在 XML 里声明后(可以完全当成 TextView 来使用),直接在 Java 文件里调用:
- mTvCountNum1.showNumberWithAnimation(3201.23f, CountNumberView.FLOATREGEX);
- mTvCountNum2.showNumberWithAnimation(65535f, CountNumberView.INTREGEX);
这里为了灵活使用,预留了数字显示格式(默认提供整型号和浮点型),大家可以根据自己的需要去更改
。
- Regex
关于 String.format 的第一个格式参数,这里引用下 api 的描述:
常规类型、字符类型和数值类型的格式说明符的语法如下:
- %[argument_index$][flags][width][.precision]conversion
可选的
是一个十进制整数,用于表明参数在参数列表中的位置。第一个参数由 "1$" 引用,第二个参数由 "2$" 引用,依此类推。
- argument_index
可选
是修改输出格式的字符集。有效标志集取决于转换类型。
- flags
可选
是一个非负十进制整数,表明要向输出中写入的最少字符数。
- width
可选
是一个非负十进制整数,通常用来限制字符数。特定行为取决于转换类型。
- precision
总结
Android 仿支付宝中余额宝的数字动画效果到这就结束了,希望这篇文章对大家在 Android 开发中能有所帮助,如果有疑问可以留言交流。
来源: http://www.phperz.com/article/17/0317/292120.html