当设置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这一步呢?