屬性動畫二--ValueAnimator

查看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.ofObject()方法實現自定義的數值生成器
 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();

以上內容 整理自慕課網


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章