一直想用ValueAnimator做數值變化,但都沒作用。
代碼如下:
private void testValueAnimation(){
ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, 100);
valueAnimator.setDuration(1000);
valueAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
valueAnimator.addUpdateListener(new AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
Log.i(TAG, "onAnimationUpdate = " + (Float)animation.getAnimatedValue());
}
});
valueAnimator.start();
}
打印只有0.0和100.0,並沒有中間變化值。
經查找,在工廠設置裏設置“動畫程序時長”爲非關閉狀態即可。
原因是ValueAnimator是Android用來做動畫的選項,因爲所有的Animator都有一個Interpolator(默認是AccelerateDecelerateInterpolator),而setInterpolator傳入的值是TimeInterpolator,即“動畫程序時長”