關鍵詞:View 動畫 / 幀動畫 / 屬性動畫
Android 動畫分為三種:View 動畫、幀動畫和屬性動畫。本次筆記初步梳理了跟 Android 動畫相關的基本知識點,便于今后溫故知新,查漏補缺。
需要知道的幾點:
View 動畫的作用對象是 View;只支持 4 種類型:平移(Translate)TranslateAnimation、旋轉(Rotate)RotateAnimation、縮放(Scale)ScaleAnimation、不透明度(Alpha)AlphaAnimation;雖然幀動畫也屬于 View 動畫,但是其表現形式與以上四種的變換效果不同;View 動畫建議采用 xml 來定義動畫,XML 的可讀性比較好;使用 View 動畫的特殊場景:ViewGroup 中可以控制子元素的出場效果,在 Activity 中可以實現不同 Activity 之間的切換效果;LayoutAnimation 也是一個 View 動畫,作用于 ViewGroup,常常被用在 ListView 上;Activity 可以自定義切換效果,主要用到 overridePendingTranslation(int enterAnim, int exitAnim) 方法,需要在 startActivty(Intent) 或者 finish() 之后調用它才能生效;PS 幀動畫: 幀動畫其實也屬于 View 動畫,但是不同的是系統提供了另一個類 AnimationDrawable 來使用幀動畫,順序播放一組實現預定義好的圖片。比較簡單但是容易引起 OOM。
需要知道的幾點:
對作用對象進行了擴展,屬性動畫可以對任何對象做動畫,甚至還可以沒有對象;想要實現比較絢麗的動畫,需要知道:ValueAnimator、ObjectAnimator 和 AnimatorSet 這三個動畫類,其中 ObjectAnimator 繼承自 ValueAnimator,AnimatorSet 是動畫集合可以定義一組動畫;屬性動畫默認的時間間隔是 300 ms,默認幀率 10 ms/幀;屬性動畫可以達到的效果是:在一個時間間隔內,完成對象從一個屬性值到另一個屬性值的改變,幾乎是無所不能的;實際開發中建議使用代碼的方式來實現屬性動畫,因為更簡單并且通過代碼動態地創建屬性動畫;屬性動畫的工作原理: 要求動畫作用的對象提供該屬性的 set 方法,屬性動畫根據你傳遞的該屬性初始值和最終值,以動畫的效果多次去調用 set 方法。每次傳遞給 set 方法的值都不一樣,確切來說是隨著時間的推移,所傳遞的值越來越接近最終值;屬性動畫中的插值器(Interpolator)和估值器(TypeEvaluator)很重要,是實現非勻速動畫的重要手段;插值器的作用是根據當前時間流逝的百分比來計算出當前屬性值改變的百分比。估值器的作用是根據當前屬性改變的百分比來計算改變后的屬性值;屬性動畫要求該屬性有 set 方法和 get 方法(可選)可以自定義插值器和估值器,它們都是一個接口,且內部都只有一個方法,我們只要派生一個類實現接口就可以了,然后就可以做出千奇百怪的效果;屬性動畫需要運行在 Looper 的線程里;End.
Note by HF. Learn from 《Android 開發藝術探索》
新聞熱點
疑難解答