動畫中的插值器和估值器

2021-09-25 19:31:26 字數 1180 閱讀 3568

timeinterpolator 時間插值器,它的作用是根據時間流逝的百分比來計算出當前屬性值改變的百分比。系統預置的有linearinterpolator(線性插值器,勻速動畫),acceleratedecelerateinterpolator(加速減速插值器,動畫兩頭慢中間快),decelerateinterpolator(減速插值器,動畫愈來越慢)等。

typeevaluator 估值器,他的作用是根據當前屬性改變的百分比計算出改變後的屬性值。系統預置的有intevaluator(針對整型屬性),floatevaluator(針對浮點型屬性)和argbevalutor(針對color屬性)。

屬性動畫中的插值器和估值器是實現非勻速動畫的重要屬性。

我們通過一些原始碼來理解插值器和估值器對屬性動畫的影響:

public class linearinterpolator extends baseinterpolator implements nativeinterpolato***ctory 

public linearinterpolator(context context, attributeset attrs)

public float getinterpolation(float input)

/** @hide */

@override

public long createnativeinterpolator()

}

通過這個方法getinterpolation(float input)可以看出線性插值器的輸入值和返回值一樣,即時間流逝的百分比=當前屬性改變的百分比;

接著看整型估值器的原始碼:

public class intevaluator implements typeevaluator

}

通過這個方法evaluate(float fraction, integer startvalue, integer endvalue) 可以看出整型估值和估值小數、起始值有關。而估值小數又和插值器相關,插值器的返回值=估值小數(fraction)。

除了系統提供的插值器和估值器之外,我們也可以自定義。實現方式也很簡單,我們只要派生乙個類實現插值器和估值器的介面就可以了。具體一點就是:自定義插值器需要實現interpolator或者timeinterpolator,自定義估值器需要實現typeevaluator。

動畫之插值器和估值器

根據時間流逝的百分比計算出當前屬性值改變的百分比 用於勻速動畫 動畫兩頭慢,中間快 動畫越來越慢 還有其他系統內建插值器 cycleinterpolator 週期運動 bounceinterpolator 最後階段彈球效果 overshootinterpolator 快速完成動畫,超出再回到結束樣式...

Android 屬性動畫跟插值器估值器

屬性動畫是android api11之後加入的。其建立過程同樣分為 動態建立跟xml靜態建立。主要有三類 valueanimator,objectanimator,animatorset。以動態建立為例,xml中建立跟tween動畫類似。唯一區別是使用animatorinflater.loadani...

插值器與估值器

先來了解以下動畫的定義 android中的動畫也遵循這個原理,只不過它的每一幀都是通過插值器與估值器動態計算出乙個矩陣,然後應用到控制項上得到的。在計算的過程中,插值器負責計算動畫執行的百分比,估值器負責根據百分比來計算屬性值。舉個例子 valueanimator valueanimator val...