android首页投稿(暂停使用,暂停投稿)Android知识

Android金额递增动画之长数据精度丢失问题

2017-06-27  本文已影响798人  Kndroid

一、背景

一个金额变动的动画的需求

二、开发

其实这个动画相当简单,下面看下网上大部人做法:

没错,就是利用ValueAnimator.ofFloat或者setFloatValues这两个方法,设置起始和结束的值,然后在监听器里获取渐变值animatedValue,

给TextView不断的setText即可;这个动画过程,FrameWork层已经帮你处理好了,只要知道原理即可,我们来看下ofFloat做了什么:

用endValue值减去startValue值,算出它们之间的差值,然后乘以fraction这个系数,再加上startValue值,那么就得到当前动画的值了

下面给大家推荐这篇文章分析的很全面了:

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参数,一个接口,实现之。

这个就是我们依葫芦画瓢写出的Double方式

是不是很简单,O(∩_∩)O哈哈~

使用方法

最终调试,问题解决~

上一篇 下一篇

猜你喜欢

热点阅读