2017-08-25 95 views
0

所以我试图用ValueAnimator动画从100值为0这样ValueAnimator奇怪的行为:返回负值

animator = ValueAnimator.ofInt((int) expansion * 100, targetExpansion * 100); 
animator.setInterpolator(interpolator); 
animator.setDuration(duration); 

animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 
    @Override 
    public void onAnimationUpdate(ValueAnimator valueAnimator) { 
     final int animatedValue = (int) valueAnimator.getAnimatedValue(); 
     Log.w(">>>>>>>", "animatedValue: " + animatedValue); 
    } 
}); 

animator.addListener(new ExpansionListener(targetExpansion)); 

animator.start(); 

其中扩张和targetExpansion可能是1/0或0/1和验证码结果在下面的输出

08-25 11:43:42.776 23457-23457/myapp W/>>>>>>>: animatedValue: 100 
08-25 11:43:42.777 23457-23457/myapp W/>>>>>>>: animatedValue: 100 
08-25 11:43:42.795 23457-23457/myapp W/>>>>>>>: animatedValue: 91 
08-25 11:43:42.816 23457-23457/myapp W/>>>>>>>: animatedValue: 81 
08-25 11:43:42.835 23457-23457/myapp W/>>>>>>>: animatedValue: 73 
08-25 11:43:42.855 23457-23457/myapp W/>>>>>>>: animatedValue: 65 
08-25 11:43:42.874 23457-23457/myapp W/>>>>>>>: animatedValue: 58 
08-25 11:43:42.894 23457-23457/myapp W/>>>>>>>: animatedValue: 50 
08-25 11:43:42.913 23457-23457/myapp W/>>>>>>>: animatedValue: 44 
08-25 11:43:42.933 23457-23457/myapp W/>>>>>>>: animatedValue: 38 
08-25 11:43:42.952 23457-23457/myapp W/>>>>>>>: animatedValue: 32 
08-25 11:43:42.972 23457-23457/myapp W/>>>>>>>: animatedValue: 27 
08-25 11:43:42.991 23457-23457/myapp W/>>>>>>>: animatedValue: 22 
08-25 11:43:43.011 23457-23457/myapp W/>>>>>>>: animatedValue: 18 
08-25 11:43:43.031 23457-23457/myapp W/>>>>>>>: animatedValue: 13 
08-25 11:43:43.050 23457-23457/myapp W/>>>>>>>: animatedValue: 10 
08-25 11:43:43.070 23457-23457/myapp W/>>>>>>>: animatedValue: 6 
08-25 11:43:43.089 23457-23457/myapp W/>>>>>>>: animatedValue: 3 
08-25 11:43:43.109 23457-23457/myapp W/>>>>>>>: animatedValue: 0 
08-25 11:43:43.128 23457-23457/myapp W/>>>>>>>: animatedValue: -2 
08-25 11:43:43.148 23457-23457/myapp W/>>>>>>>: animatedValue: -4 
08-25 11:43:43.167 23457-23457/myapp W/>>>>>>>: animatedValue: -6 
08-25 11:43:43.187 23457-23457/myapp W/>>>>>>>: animatedValue: -8 
08-25 11:43:43.206 23457-23457/myapp W/>>>>>>>: animatedValue: -9 
08-25 11:43:43.226 23457-23457/myapp W/>>>>>>>: animatedValue: -10 
08-25 11:43:43.245 23457-23457/myapp W/>>>>>>>: animatedValue: -11 
08-25 11:43:43.265 23457-23457/myapp W/>>>>>>>: animatedValue: -12 
08-25 11:43:43.285 23457-23457/myapp W/>>>>>>>: animatedValue: -12 
08-25 11:43:43.305 23457-23457/myapp W/>>>>>>>: animatedValue: -13 
08-25 11:43:43.324 23457-23457/myapp W/>>>>>>>: animatedValue: -13 
08-25 11:43:43.344 23457-23457/myapp W/>>>>>>>: animatedValue: -13 
08-25 11:43:43.363 23457-23457/myapp W/>>>>>>>: animatedValue: -12 
08-25 11:43:43.383 23457-23457/myapp W/>>>>>>>: animatedValue: -12 
08-25 11:43:43.402 23457-23457/myapp W/>>>>>>>: animatedValue: -12 
08-25 11:43:43.421 23457-23457/myapp W/>>>>>>>: animatedValue: -11 
08-25 11:43:43.441 23457-23457/myapp W/>>>>>>>: animatedValue: -11 
08-25 11:43:43.460 23457-23457/myapp W/>>>>>>>: animatedValue: -10 
08-25 11:43:43.480 23457-23457/myapp W/>>>>>>>: animatedValue: -9 
08-25 11:43:43.499 23457-23457/myapp W/>>>>>>>: animatedValue: -8 
08-25 11:43:43.519 23457-23457/myapp W/>>>>>>>: animatedValue: -8 
08-25 11:43:43.539 23457-23457/myapp W/>>>>>>>: animatedValue: -7 
08-25 11:43:43.559 23457-23457/myapp W/>>>>>>>: animatedValue: -6 
08-25 11:43:43.578 23457-23457/myapp W/>>>>>>>: animatedValue: -5 
08-25 11:43:43.598 23457-23457/myapp W/>>>>>>>: animatedValue: -4 
08-25 11:43:43.617 23457-23457/myapp W/>>>>>>>: animatedValue: -3 
08-25 11:43:43.637 23457-23457/myapp W/>>>>>>>: animatedValue: -3 
08-25 11:43:43.656 23457-23457/myapp W/>>>>>>>: animatedValue: -2 
08-25 11:43:43.676 23457-23457/myapp W/>>>>>>>: animatedValue: -1 
08-25 11:43:43.695 23457-23457/myapp W/>>>>>>>: animatedValue: -1 
08-25 11:43:43.715 23457-23457/myapp W/>>>>>>>: animatedValue: 0 
08-25 11:43:43.735 23457-23457/myapp W/>>>>>>>: animatedValue: 0 
08-25 11:43:43.754 23457-23457/myapp W/>>>>>>>: animatedValue: 0 
08-25 11:43:43.774 23457-23457/myapp W/>>>>>>>: animatedValue: 0 
08-25 11:43:43.793 23457-23457/myapp W/>>>>>>>: animatedValue: 0 

,问题是:为什么它产生从0设置为0奇怪负值其是,其本身异常大(33项),那么有用的(18个)的设定值?此外,当我试图去从0到100同样的情况:

08-25 11:53:48.377 23457-23457/myapp W/>>>>>>>: animatedValue: 0 
08-25 11:53:48.390 23457-23457/myapp W/>>>>>>>: animatedValue: 0 
08-25 11:53:48.409 23457-23457/myapp W/>>>>>>>: animatedValue: 9 
08-25 11:53:48.432 23457-23457/myapp W/>>>>>>>: animatedValue: 19 
08-25 11:53:48.451 23457-23457/myapp W/>>>>>>>: animatedValue: 27 
08-25 11:53:48.472 23457-23457/myapp W/>>>>>>>: animatedValue: 35 
08-25 11:53:48.490 23457-23457/myapp W/>>>>>>>: animatedValue: 43 
08-25 11:53:48.513 23457-23457/myapp W/>>>>>>>: animatedValue: 50 
08-25 11:53:48.529 23457-23457/myapp W/>>>>>>>: animatedValue: 56 
08-25 11:53:48.549 23457-23457/myapp W/>>>>>>>: animatedValue: 63 
08-25 11:53:48.569 23457-23457/myapp W/>>>>>>>: animatedValue: 68 
08-25 11:53:48.588 23457-23457/myapp W/>>>>>>>: animatedValue: 73 
08-25 11:53:48.607 23457-23457/myapp W/>>>>>>>: animatedValue: 78 
08-25 11:53:48.628 23457-23457/myapp W/>>>>>>>: animatedValue: 83 
08-25 11:53:48.646 23457-23457/myapp W/>>>>>>>: animatedValue: 87 
08-25 11:53:48.666 23457-23457/myapp W/>>>>>>>: animatedValue: 90 
08-25 11:53:48.686 23457-23457/myapp W/>>>>>>>: animatedValue: 94 
08-25 11:53:48.705 23457-23457/myapp W/>>>>>>>: animatedValue: 97 
08-25 11:53:48.725 23457-23457/myapp W/>>>>>>>: animatedValue: 100 
08-25 11:53:48.744 23457-23457/myapp W/>>>>>>>: animatedValue: 102 
08-25 11:53:48.764 23457-23457/myapp W/>>>>>>>: animatedValue: 104 
08-25 11:53:48.783 23457-23457/myapp W/>>>>>>>: animatedValue: 106 
08-25 11:53:48.803 23457-23457/myapp W/>>>>>>>: animatedValue: 108 
08-25 11:53:48.822 23457-23457/myapp W/>>>>>>>: animatedValue: 109 
08-25 11:53:48.842 23457-23457/myapp W/>>>>>>>: animatedValue: 110 
08-25 11:53:48.862 23457-23457/myapp W/>>>>>>>: animatedValue: 111 
08-25 11:53:48.881 23457-23457/myapp W/>>>>>>>: animatedValue: 112 
08-25 11:53:48.901 23457-23457/myapp W/>>>>>>>: animatedValue: 112 
08-25 11:53:48.920 23457-23457/myapp W/>>>>>>>: animatedValue: 113 
08-25 11:53:48.940 23457-23457/myapp W/>>>>>>>: animatedValue: 113 
08-25 11:53:48.959 23457-23457/myapp W/>>>>>>>: animatedValue: 113 
08-25 11:53:48.979 23457-23457/myapp W/>>>>>>>: animatedValue: 112 
08-25 11:53:48.998 23457-23457/myapp W/>>>>>>>: animatedValue: 112 
08-25 11:53:49.017 23457-23457/myapp W/>>>>>>>: animatedValue: 112 
08-25 11:53:49.037 23457-23457/myapp W/>>>>>>>: animatedValue: 111 
08-25 11:53:49.058 23457-23457/myapp W/>>>>>>>: animatedValue: 111 
08-25 11:53:49.076 23457-23457/myapp W/>>>>>>>: animatedValue: 110 
08-25 11:53:49.096 23457-23457/myapp W/>>>>>>>: animatedValue: 109 
08-25 11:53:49.116 23457-23457/myapp W/>>>>>>>: animatedValue: 108 
08-25 11:53:49.135 23457-23457/myapp W/>>>>>>>: animatedValue: 108 
08-25 11:53:49.154 23457-23457/myapp W/>>>>>>>: animatedValue: 107 
08-25 11:53:49.174 23457-23457/myapp W/>>>>>>>: animatedValue: 106 
08-25 11:53:49.194 23457-23457/myapp W/>>>>>>>: animatedValue: 105 
08-25 11:53:49.213 23457-23457/myapp W/>>>>>>>: animatedValue: 104 
08-25 11:53:49.233 23457-23457/myapp W/>>>>>>>: animatedValue: 103 
08-25 11:53:49.252 23457-23457/myapp W/>>>>>>>: animatedValue: 103 
08-25 11:53:49.272 23457-23457/myapp W/>>>>>>>: animatedValue: 102 
08-25 11:53:49.291 23457-23457/myapp W/>>>>>>>: animatedValue: 101 
08-25 11:53:49.311 23457-23457/myapp W/>>>>>>>: animatedValue: 101 
08-25 11:53:49.330 23457-23457/myapp W/>>>>>>>: animatedValue: 100 
08-25 11:53:49.350 23457-23457/myapp W/>>>>>>>: animatedValue: 100 
08-25 11:53:49.369 23457-23457/myapp W/>>>>>>>: animatedValue: 100 
08-25 11:53:49.389 23457-23457/myapp W/>>>>>>>: animatedValue: 100 
08-25 11:53:49.408 23457-23457/myapp W/>>>>>>>: animatedValue: 100 

这看起来像一个反弹的效果,我不指望,不希望。

+0

您是否在动画中使用了LinearInterpolator? – waleedsarwar86

+0

你使用了什么插补器? –

+0

你使用'BounceInterpolator'吗?如果是这样,那就是为什么发生这种情况..一个插入器,其中的变化在最后反弹。 – Ricardo

回答

1

你的问题在于你正在使用的Interpolator。在插值期间,FastOutSlowInInterpolator可能会失去限制。

从文档:

getInterpolation() - 返回: 浮动:内插值。对于超出其目标的内插器,该值可以大于1.0;对于低于其目标的内插器,该值可以小于0。

+1

其实在代码中'OvershootInterpolator'已设置,我没有提到它。 – Stan