美文网首页
ValueAnimator一个要注意的细节

ValueAnimator一个要注意的细节

作者: 眼热 | 来源:发表于2017-03-10 13:52 被阅读416次

当设置ValueAnimator的参数超过两个时,除了首尾两个值一定会变化到,中间的值可能会跳过去。

比如说ValueAnimator.ofFloat(1,0,1);
通过float value = (float)animation.getAnimatedValue()获得的value是由1到0再到1变化。
但实际上只有首尾的两个1是必定会得到,value是不保证可以设为0的。
value有可能直接从0.05跳到0.05,而不会刚好变为0。

坑的是每次执行ValueAnimator获得的结果却不一样,所以要监听ValueAnimator到达“0”(即中间),不能用value==0来判断,这样会出现时灵时不灵的情况。

比如某次执行后会出现下列结果:
onAnimationUpdate: value 1.0
onAnimationUpdate: value 0.9985742
onAnimationUpdate: value 0.9943008
onAnimationUpdate: value 0.98768836
onAnimationUpdate: value 0.9779293
onAnimationUpdate: value 0.9653816
onAnimationUpdate: value 0.9510565
onAnimationUpdate: value 0.93320465
onAnimationUpdate: value 0.8655012
onAnimationUpdate: value 0.8090169
onAnimationUpdate: value 0.74174184
onAnimationUpdate: value 0.6683521
onAnimationUpdate: value 0.62769127
onAnimationUpdate: value 0.5437604
onAnimationUpdate: value 0.45399046
onAnimationUpdate: value 0.3564117
onAnimationUpdate: value 0.25780725
onAnimationUpdate: value 0.1564343
onAnimationUpdate: value 0.053381562
onAnimationUpdate: value 0.053381562
onAnimationUpdate: value 0.103486896
onAnimationUpdate: value 0.1564343
onAnimationUpdate: value 0.25780725
onAnimationUpdate: value 0.35934532
onAnimationUpdate: value 0.45399046
onAnimationUpdate: value 0.5437608
onAnimationUpdate: value 0.63013387
onAnimationUpdate: value 0.743845
onAnimationUpdate: value 0.7764865
onAnimationUpdate: value 0.86550117
onAnimationUpdate: value 0.91397095
onAnimationUpdate: value 0.9510565
onAnimationUpdate: value 0.9661963
onAnimationUpdate: value 0.9946308
onAnimationUpdate: value 0.99857426
onAnimationUpdate: value 1.0

那怎么判断ValueAnimator运行到了0这一步呢?

相关文章

网友评论

      本文标题:ValueAnimator一个要注意的细节

      本文链接:https://www.haomeiwen.com/subject/rpwngttx.html