一、背景
一个金额变动的动画的需求
二、开发
其实这个动画相当简单,下面看下网上大部人做法:
没错,就是利用ValueAnimator.ofFloat或者setFloatValues这两个方法,设置起始和结束的值,然后在监听器里获取渐变值animatedValue,
给TextView不断的setText即可;这个动画过程,FrameWork层已经帮你处理好了,只要知道原理即可,我们来看下ofFloat做了什么:
下面给大家推荐这篇文章分析的很全面了:
http://javayhu.me/blog/2016/05/26/when-math-meets-android-animation-1/
一切都是这么顺利,不是吗! 然而问题来了:
上面数据有9位,java中float类型能保证的数据精度完整的就只有6-7位,那么问题就来了,最终展示出来的数据竟然少了几块钱,测试同学不给过咋办?
获取后台数据,经过gson转化后,使用BigDecimal赋值,没问题,然后用BigDecimal.floatvalue()取值后,发现问题来了,数值不对啊!
知道float数据问题后,当然就想换成double类型咯,然而~~~,ValueAnimator.ofDouble() 根本没有?,咋办?
没关系,ValueAnimator还提供了一个ofObject()方法,自然是扩展的方法,其中有一个TypeEvaluator参数,一个接口,实现之。
是不是很简单,O(∩_∩)O哈哈~
最终调试,问题解决~