在 Android 的 FrameWork 中,為我們提供三種動畫的實現方式:逐幀(Frame)動畫、視圖/補間動畫(View Animation)和屬性動畫(Property Animation)。由于,這三種動畫的實現方式和針對面不一樣,應用的范圍也有所區別,因此我們需要根據具體的需求來選擇正確動畫類型。
根據 SDK 中的描述,這三者的功能強大程度為:逐幀動畫 < 視圖動畫 < 屬性動畫。
一、逐幀動畫(Frame Animation)
該動畫的方式就是將動畫的過程的每一張靜態圖片都收集起來,然后依次顯示這些圖片,利用人眼的“視覺停留”的原理,給用戶產生動畫的效果。
逐幀動畫是一種常見的動畫形式(Frame By Frame),其原理是在“連續的關鍵幀”中分解動畫動作,也就是在時間軸的每幀上逐幀繪制不同的內容,使其連續播放而成動畫。 因為逐幀動畫的幀序列內容不一樣,不但給制作增加了負擔而且最終輸出的文件量也很大,但它的優勢也很明顯:逐幀動畫具有非常大的靈活性,幾乎可以表現任何想表現的內容,而它類似與電影的播放模式,很適合于表演細膩的動畫。例如:人物或動物急劇轉身、 頭發及衣服的飄動、走路、說話以及精致的 3D 效果等等。
二、視圖動畫(Tween Animation)
也稱為補間(Tween)動畫,根據這兩個定義可以看出該動畫方式的一些特征:
1、該動畫方式只是針對于 View 對象實現 view 組件的移動、放大、縮小以及漸變等效果,例如 ImageView、Button 等;
2、實現該動畫時,只需要給出兩個關鍵幀中的內容即可,動畫中各個過渡幀中的內容由 flash 自動生成。可以理解成望文生義,就是在兩點之間插入漸變值來平滑過渡。
由于視圖動畫在 Android 中是一個 older system,所以還不能對所有的效果進行支持,目前只支持:
1、透明度變化的動畫(AlphaAnimation);
2、大小縮放的動畫(ScaleAnimation);
3、位置變化的動畫(TranslateAnimation);
4、旋轉動畫(RotateAnimation)。
三、屬性動畫
為了彌補視圖動畫的不足,Android 在 3.0 中引入了屬性動畫。和視圖動畫專注與視圖效果不同,它更專注于對象的屬性的變化,通過改變對象的屬性而實現動畫包括可是屬性和其他屬性,不論該對象是否可見。例如:你使用視圖動畫將一個 Button 放大一倍,在界面上的效果可以實現,但是該 Button 的觸摸響應區域還是和原來的一樣,也就是說,視圖動畫并不是真正的將該 Button 放大一倍。
屬性動畫和補間動畫類似,不過是真的屬性在變動,包括可視屬性和其他屬性。
補間動畫僅僅是可視屬性在顯示層面的動畫,屬性的實質并未改動。
一般情況下推薦使用最新的屬性動畫。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點
疑難解答