Android動畫相關(guān)技巧

1. 動畫估值器(TypeEvaluator

使用估值器可以計算動畫元素的目標(biāo)屬性值,例如ArgbEvaluator可以在顏色變化的動畫中計算出當(dāng)前的顏色,使用方式如下:

// 構(gòu)造ArgbEvaluator對象
val argbEvaluator = ArgbEvaluator()
// fraction 通常來自差值器算出的百分比
val fraction = 0.5f
// 這里表示一個從藍(lán)變紅的動畫中,當(dāng)差值器的值是0.5f時,顏色應(yīng)該處于何種狀態(tài)
val color = (argbEvaluator.evaluate(fraction, Color.BLUE, Color.RED) as Int)

ArgbEvaluator外,Android還默認(rèn)提供多種估值器,如IntEvaluator、FloatEvaluatorPointFEvaluator

2. Property

這是在屬性動畫中用到的類,常見的子類有IntProperty、FloatProperty, 該類可以方便地在動畫中設(shè)置View的各個屬性,新建一個自定義Property用作在屬性動畫中修改View的高度,示例如下:

@RequiresApi(api = Build.VERSION_CODES.N)
public class HeightProperty extends IntProperty<View> {
    public PropertyHeight() {
        super("PropertyHeight");
    }

    @Override
    public void setValue(View object, int value) {
        object.getLayoutParams().height = value;
        object.setLayoutParams(object.getLayoutParams());
    }

    @Override
    public Integer get(View object) {
        return object.getLayoutParams().height;
    }
}

HeightProperty 使用示例如下

// 獲取到要做動畫的View對象
val view = findViewById<View>(R.id.progress)
// 構(gòu)造動畫對象
val pullA = ObjectAnimator.ofPropertyValuesHolder(view, PropertyValuesHolder.ofInt(HeightProperty(), 700, 1200))
        .also {
            it.duration = 900L
        }
// 開啟動畫
pullA.start()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容