美文网首页
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