仿支付宝“数字增长动画”
来源:互联网 发布:少女前线枪娘数据大全 编辑:程序博客网 时间:2024/05/18 00:51
一、前言
一直都觉得支付宝的数字增长动画很有趣,今天抽空写了一个Demo与大家分享一下。
最终的实现效果图
不过这个Demo有几个缺点
1、最大的结束值不能超过10000000。
2、小数点的位数只能固死两位数。
不过嘛也不妨碍日常使用,打算以后再完善这些缺点吧^_^
二、使用方法
调用方法比较简单。有两个重载方法,第一个只需要传入一个结束值就行了。
如果你不仅想传入一个结束值还想指定动画的执行时间,请使用第二个start方法。
三、源代码
try { // customBounceTextView.start(395f); //2000表示增长的动画持续2秒 //customBounceTextView.start(395f, 2000);} catch (Exception e) { e.printStackTrace(); Toast.makeText(getApplication(), "有异常", Toast.LENGTH_SHORT).show();}
三、源代码
package per.edward.numberrise;import android.animation.ValueAnimator;import android.content.Context;import android.util.AttributeSet;import android.widget.TextView;/** * description:仿支付宝“数字增长动画” * <p/> * author:Edward * <p/> * 2015/11/13 */public class CustomBounceTextView extends TextView { public CustomBounceTextView(Context context) { super(context, null, 0); } public CustomBounceTextView(Context context, AttributeSet attrs) { super(context, attrs, 0); } public CustomBounceTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } /** * 开始数字增长动画(声明了Exception异常,要求使用者必须处理此异常) * * @param endNumber */ public void start(float endNumber) throws Exception { start(endNumber, 1500); } /** * 开始数字增长动画(声明了Exception异常,要求使用者必须处理此异常) * * @param endNumber * @param duration */ public void start(float endNumber, int duration) throws Exception { if (endNumber > 10000000) { //抛出异常 throw new IllegalArgumentException(endNumber + "不能大于10000000"); } ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, endNumber); //动画的持续时间 valueAnimator.setDuration(duration); valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator valueAnimator) { float temp = (float) valueAnimator.getAnimatedValue(); setText(getRiseNumber(temp)); } }); //开始执行动画 valueAnimator.start(); } /** * 获取增长的数字 * * @param number * @return */ public String getRiseNumber(float number) { String numberStr = String.valueOf(number); //获取小数点的下标(由于下标是有0开始,为了方便计算将其加1变为从1开始) int pointIndex = numberStr.indexOf(".") + 1; //计算此字符串的长度 int lastNumberIndex = numberStr.length(); if (pointIndex + 1 == lastNumberIndex) { //如果传进来的字符串例如是:123.0的则直接在后面拼接1个0 return numberStr + "0"; } else if (pointIndex + 1 == lastNumberIndex + 1) { //如果传进来的字符串例如是:123.00小数点恰好是两位,则直接返回该字符串 return numberStr; } else { //如果传进来的字符串例如是:123.0000的,则直接截取第0位到小数点后两位的字符串 return numberStr.substring(0, pointIndex + 2); } }}
四、结束
源代码请戳这里仿支付宝“数字增长动画”
0 0
- 仿支付宝“数字增长动画”
- 【增长的数字(仿支付宝资产数字)】
- 关于支付宝数字增长动画的效果
- 仿支付宝数字跳动
- 仿支付宝支付成功动画
- PathMeasure 仿支付宝支付动画
- 仿支付宝数字支付键盘
- 仿支付宝口碑按钮动画
- 高仿支付宝首页头部动画
- Android 仿支付宝数字变换,滚动
- 仿支付宝输入支付密码2(带动画)
- 动画特效二十:仿支付宝转账动画
- Android 仿余额宝数字动画实现
- 仿余额宝的数字动画效果
- 简单实现数字增长动画
- Android仿支付宝咻一咻动画
- transform仿支付宝咻一咻动画
- androidの高仿支付宝扫描动画效果
- strtoul函数功能讲解与实现
- MFC 下自定义消息中获取 Tab Control的子对话框的 句柄
- POJ3764 The xor-longest Path(字典树)
- 渣硕的校招求职经历
- MyBatis3和Spring4基于接口编程的例子
- 仿支付宝“数字增长动画”
- Android-->RatingBar自定义大小,自定义样式(图片)
- Android初识-JSON字符串解析详解
- 打造开发神器—Android Studio上的常用5个插件介绍
- OTA打包工具
- mysqlscript文档翻译
- js数组组合
- redis-高级应用
- java实现选择排序算法,sort