Android View動(dòng)畫框架
原理:每次繪制視圖時(shí)View所在的View Group中的drawChild函數(shù)獲取該View的Animation的Transformation值,然后調(diào)用canvas.concat(transformToApply.getMatrix()),通過矩陣運(yùn)算完成動(dòng)畫幀柬赐。
視圖動(dòng)畫:
AlphaAnimation(透明度動(dòng)畫):
圖 1
RotateAnimation(旋轉(zhuǎn)動(dòng)畫):
圖 2
TranslateAnimation(位移動(dòng)畫):
圖 3
ScaleAnimation(縮放動(dòng)畫):
圖 4
動(dòng)畫合集:通過AnimationSet將動(dòng)畫以組合形式展現(xiàn)
圖 5
屬性動(dòng)畫:
ObjectAnimator:創(chuàng)建一個(gè)ObjectAnimator只需通過其靜態(tài)工廠類直接返回ObjectAnimator對(duì)象劝萤。
圖 6
注意:在使用ObjectAnimator時(shí),要操縱的屬性必須具有g(shù)et微猖、set方法,否則ObjectAnimator無法起效。如果屬性沒有g(shù)et燕少、set方法,也可通過自定義一個(gè)屬性類或者包裝類來間接給屬性增加get蒿囤、set方法棺亭,使用時(shí)只需操縱包裝類就可調(diào)用方法。
圖 7
圖 7-2
PropertyValuesHolder:與AnimationSet類似,同時(shí)作用多種動(dòng)畫
圖 8
ValueAnimator:Object Animation 繼承自ValueAnimator
圖 9
使用方法:在ValueAnimator的AnimatorUpdateListener中監(jiān)聽數(shù)值的變換镶摘,從而完成動(dòng)畫的變換
圖 10
動(dòng)畫事件的監(jiān)聽:一個(gè)完整動(dòng)畫具有Start嗽桩、Repeat、End凄敢、Cancel四個(gè)過程
圖 11
AnimatorSet:作用多種動(dòng)畫碌冶,同時(shí)實(shí)現(xiàn)更為精確的順序控制
圖 12
View的animate方法:直接驅(qū)動(dòng)屬性動(dòng)畫
圖 13