查看ObjectAnimator的源碼,會發現其實是繼承自ValueAnimator,是ValueAnimator的一個封裝。
ValueAnimator本身並不響應動畫,也不能控制屬性,它是一個數值發生器,產生動畫過程中的各種數值,
將這些數值作用於控件屬性,使整個動畫過程能夠精確地完成
下面這個小例子中,ValueAnimator 使int的數值在5000ms中由0變化到100,並且我們設置了數值變化的監聽事件
每次數值變化的時候我們都在button上打印輸出,注意,在沒有設置插值器的時候,這裏的int是均勻變化的
ValueAnimator animator=ValueAnimator.ofInt(0,100);
animator.setDuration(5000);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
Integer value= (Integer) animation.getAnimatedValue();
button.setText(""+value);
}
});
animator.start();
ValueAnimator animator=ValueAnimator.ofObject(new TypeEvaluator() {
@Override
/**
*fraction是一個 0-1 的時間因子,結合startValue和endValue以及各種計算方式(如各種插值器)
* 就可以生成各種各樣的想要的數值序列
*/
public Object evaluate(float fraction, Object startValue, Object endValue) {
return null;
}
});
animator.start();
以上內容 整理自慕課網