動畫之插值器和估值器

2021-09-27 07:28:51 字數 1672 閱讀 1683

根據時間流逝的百分比計算出當前屬性值改變的百分比

用於勻速動畫

動畫兩頭慢,中間快

動畫越來越慢

還有其他系統內建插值器:cycleinterpolator(週期運動)、bounceinterpolator(最後階段彈球效果)、overshootinterpolator(快速完成動畫,超出再回到結束樣式)、anticipateinterpolator(先退後再加速前進)、anticipateovershootinterpolator(先退後再加速前進,超出終點後再回終點)

型別估值演算法,即估值器。 根據當前屬性改變的百分比來計算改變後的屬性值。系統已有的估值器:intevaluator(針對整型屬性 )、floatevaluator(針對浮點型屬性 )、argbevaluator(針對color屬性)

自定義插值器需要實現 interpolator / timeinterpolator介面,複寫getinterpolation()方法。補間動畫 實現 interpolator介面;屬性動畫實現timeinterpolator介面。

public inte***ce interpolator 

}timeinterpolator 介面同上

例項
定義乙個減速加速插值器

// 減速加速插值器

class decelerateaccelerateinterpolator : timeinterpolator

}// activity 中具體實現

private fun interlatorani()

typeevaluator 介面並且複寫 evaluate()方法

public inte***ce typeevaluator
例項
定義乙個拋物線 軌跡 估值器

// 建point類用來儲存座標資訊,point物件即是我們要操作的物件

data class point(val x: float, val y: float)

// 自定義估值演算法 pointtypeevaluator並制定泛型為point型別,

// 在 evaluate方法 中進行估值演算法,為point物件的x和y賦值並將該物件返回

class pointtypeevaluator : typeevaluator

}// activity 中具體實現

private fun clickline()

animator.start()

}

timeinterpolator和typeevaluator是實現 非勻速動畫 的重要手段。屬性動畫是對屬性做動畫,屬性要實現動畫,首先由timeinterpolator(插值器)根據時間流逝的百分比計算出當前屬性值改變的百分比,並且 插值器 將這個百分比返回,這個時候 插值器 的工作就完成了;這就需要 估值器 根據當前屬性改變的百分比來計算改變後的屬性值,根據這個屬性值,我們就可以設定當前屬性的值了。

動畫中的插值器和估值器

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

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

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

插值器與估值器

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