转载请注明出处:http://blog.csdn.net/Chay_Chan/article/details/73381863

###NumberRunningTextView改良版
  在我曾写过的一篇博客:http://blog.csdn.net/chay_chan/article/details/70196478 中,介绍了我自己封装的一款仿支付宝数字滚动的TextView,有不少的朋友在评论中跟我提出建议,建议我使用ValueAnimator实现数字逐渐变化的功能,一开始在写这个控件的时候,一时间没有想到可以使用ValueAnimator来实现数字的递增,当看到评论里热心朋友的提醒后,觉得需要对这个控件进行改良,使用ValueAnimator来代替之前的一大堆操作,之前是通过使用handler实现递归,逐渐让文字变化,比较麻烦,而改成使用ValueAnimator后,一切变得简单了。

####使用ValueAnimator.ofFloat()实现金额数字的变化

 ValueAnimator floatAnimator =  ValueAnimator.ofFloat(0, finalFloat);floatAnimator.setDuration(duration);floatAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(ValueAnimator animation) {float currentNum = (float) animation.getAnimatedValue();String str = formatter.format(Double.parseDouble(String.valueOf(currentNum)));//格式化成两位小数// 更新显示的内容if (useCommaFormat) {//使用每三位数字一个逗号的格式String formatStr = StringUtils.addComma(str);//三位一个逗号格式的字符串setText(formatStr);} else {setText(str);}}});floatAnimator.start();

####使用ValueAnimator.ofInt()实现整型数字的变化

ValueAnimator intAnimator = new ValueAnimator().ofInt(0, finalNum);intAnimator.setDuration(duration);intAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(ValueAnimator animation) {int currentNum = (int) animation.getAnimatedValue();setText(String.valueOf(currentNum));}});intAnimator.start();

###新增功能

####可以修改数字滚动动画执行的时间

如果不设置动画执行的周期,则会使用默认的动画执行周期,如下所示都是使用默认动画执行时间

         <com.chaychan.viewlib.NumberRunningTextViewandroid:id="@+id/tv_money"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:text="0.00"android:textColor="#fff"android:textSize="30sp"android:textStyle="bold"/><com.chaychan.viewlib.NumberRunningTextViewandroid:id="@+id/tv_num"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:text="200"android:textColor="#fff"android:textSize="30sp"app:textType="num"/>

执行的效果如下:

修改其中一个控件的动画执行时间:

<com.chaychan.viewlib.NumberRunningTextViewandroid:id="@+id/tv_money"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:text="0.00"android:textColor="#fff"android:textSize="30sp"android:textStyle="bold"/><com.chaychan.viewlib.NumberRunningTextViewandroid:id="@+id/tv_num"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:text="200"android:textColor="#fff"android:textSize="30sp"app:textType="num"app:duration="3000" />

执行的效果如下:

  在使用的过程中,就可以通过改变动画执行的周期来控制数字滚动的速度了,只需在布局文件中,配置duration属性,注意这里是以毫秒(ms)为单位。

####可以修改数字最少要达到的某个值才会滚动

  这个功能弥补之前空间的一个缺陷,就是在数字很小的时候,比如金额的数字为0.01,整型数字为1,那么动画执行的结果让人感觉起来有点卡顿的感觉,如下所示:

  所以需要让数字达到某个值才可以进行滚动,当值未能到达这个值的时候,则不会滚动,当达到指定的值后,就可以进行滚动,对应的属性分别为minMoney(设置最小达到的金额)、minNum(设置最小达到的数字),使用如下:

     <com.chaychan.viewlib.NumberRunningTextViewandroid:id="@+id/tv_money"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:text="0.00"android:textColor="#fff"android:textSize="30sp"android:textStyle="bold"app:runWhenChange="false"app:minMoney="0.98"/><com.chaychan.viewlib.NumberRunningTextViewandroid:id="@+id/tv_num"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:text="200"android:textColor="#fff"android:textSize="30sp"app:textType="num"app:runWhenChange="false"app:minNum="5"/>

当我传入金额小于九毛八(0.98)的时候,则不会执行滚动的动画,当我传入的数字小于5的时候,数字也不会滚动。如图所示

当数字达到要求的时候,则会滚动,如图所示

  如果不设置这个属性,默认情况下,金额需要达到0.1,数字需要达到3才会进行滚动,具体需要可以根据使用进行配置,如果你不觉得数字过小时动画看起来卡的话,那么可以设置这个属性为0,如果是使用金钱类型,设置最小金额minMoney(浮点类型),如果是整型数字类型,设置最小的数字minNum(整数类型)。

####导入方式####
在项目根目录下的build.gradle中的allprojects{}中,添加jitpack仓库地址,如下:

allprojects {repositories {jcenter()maven { url 'https://jitpack.io' }//添加jitpack仓库地址}
}

打开app的module中的build.gradle,在dependencies{}中,添加依赖,如下:

dependencies {......compile 'com.github.chaychan:PowerfulViewLibrary:1.1.7'
}

源码github地址:https://github.com/chaychan/PowerfulViewLibrary.git

NumberRunningTextView改良版相关推荐

  1. 优化改良版:数组,List,等集合需要加逗号或其它符合转成字符串

    大家经常需要数组加逗号拼接成字符串的情况传统作法就是写for,foreach拼接, 现给出优化改良版数组,List,等集合需要加逗号或其它符合转成字符串方法: 1 List<string> ...

  2. 区位码怎么知道点阵里的起始点_自身免疫疾病的GAPS起始饮食改良版

    写这篇文章的原因 如果您已经关注我的博客一段时间,您知道我开始使用GAPS饮食,然后转换到AIP饮食,因为我仍在努力治疗炎症和自身免疫的发作. Katy Haldiman 有同样的经历,我们并不孤单. ...

  3. 针对文字加密的简单 JS 加密算法 --进制乱序法改良版

    在上一篇文章<普通 http 网络下数据的安全传输(设计原理)>中,我曾经推荐浏览器和服务器之间的加密通讯宜采用<几个文字加密的 JS 简洁算法(续2)--进制乱序法>中提及的 ...

  4. 目标检测voc转coco改良版

    <目标检测voc转coco改良版>   我训练目标检测的一般流程:1.labelme标注:2.labelme转voc,对img和voc进行数据增广:3.voc转coco:4.计算图片的RG ...

  5. MPMoviePlayerViewController 改良版播放器

    2019独角兽企业重金招聘Python工程师标准>>> // //  ViewController.m //  改良版播放器 // //  Created by dc008 on 1 ...

  6. [USACO 2009 Dec G]Video Game Troubles-----分组背包的改良版

    这题是分组背包的改良版,如果还按分组背包的思路枚举每组物品状态会TLE 因此需要换一种思考方式 类似于状态机模型 状态表示 f[i]表示前i-1里任意选,但是选第i个物品的最大价值 g[i]表示前i个 ...

  7. C++约瑟夫环改良版

    约瑟夫环:约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到m的那个人出列:他的下一个人又从1开始报数,数到m的 ...

  8. c语言之圆的周长、面积、圆球的体积--改良版

    #define PI 3.1415926 //定义符号常量PI代表为3.1415926 #include <stdio.h> #include <math.h> //调用pow ...

  9. PyGame弹珠游戏双人改良版

    # _*_ coding:utf-8 _*_ import pygame from pygame.locals import * from sys import exit__author__ = 'a ...

最新文章

  1. 二叉排序树的存储结构和增删查改
  2. python计算时间差
  3. Caffe学习系列(7):solver及其配置
  4. oracle创建数据库、表空间、用户并授权
  5. Adobe FrameMaker 2019中文版
  6. vim插件推荐之auto-pairs
  7. android中TextView分段显示不同颜色,字体,时间
  8. 2014年JAVA省赛B组---第四题---大衍数列
  9. hystrix原理_面试必问的SpringCloud实现原理图
  10. vue 修改模板{{}}标签_vue-admin-template模板添加tagsview
  11. IOT---(6)Android Things 开发环境搭建
  12. L3-005. 垃圾箱分布-PAT团体程序设计天梯赛GPLT(Dijkstra)
  13. 图像中有关位图、色位图、以及所占字节数
  14. [源码和报告分享]基于Android-JavaEE-DB2实现的旧物交易平台
  15. 2021年苏大计算机考研872真题及解析
  16. spider pi 智能视觉六足机器人 开箱介绍 0602
  17. 小程序组件-仿微信通讯录
  18. 怎么用计算机搜索文件,如何查找文件 巧用Win7快速查找文件
  19. FPGA-篮球计分计时器的设计
  20. SQL-44 将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005,其他数据保持不变,使用replace实现。...

热门文章

  1. 国际短信发不出去是怎么回事?
  2. CIPT备考心得分享-下一个考过的就是你
  3. 由于找不到mscoree.dll无法继续执行代码
  4. 呼叫中心座席人员如何把控时间
  5. 呼叫中心坐席功能在职场中的应用
  6. Cannot Resolve method subscribe(anonymous org.reactivestreams.Subscriber 已解决
  7. Unity 骨骼动画
  8. 记录自己学习尚硅谷javaweb2022版中遇到的一些问题
  9. origin画对数坐标_Origin 画对数坐标图
  10. Ubuntu 20.04.2.0 LTS 下安装Geany 1.36的命令列表