標籤:
Android起初有兩種動畫:Frame Animation(逐幀動畫) Tween Animation(補間動畫)
兩種動畫的工作原理:
Frame Animation:大體意思就是將UI設計的多張圖片組成的動畫,然後在將他們組合起來連貫進行播放,類似於早期電影的工作原理。
Tween Animation:是對某個View進行一系列的動畫的操作,包括淡入淡出(Alpha),縮放(Scale),平移(Translate),旋轉(Rotate)四種模式
然而在從Android3.0版本開始後,Android系統給我們提供了一種全新的動畫模式,Property Animation(屬性動畫),
Tween Animation動畫的幾大缺點:
1:Tween Animation(補間動畫)只是針對於View,超脫了View就無法操作了,這句話的意思是:假如我們需要對一個Button,ImageView,LinearLayout或者是其他的繼承自View的各種組件進行動畫的操作時,Tween Animation是可以幫我們完成我們需要完成的功能的,但是如果我們需要用到對一個非View的對象進行動畫操作的話,那麼補間動畫就沒辦法實現了。舉個例子:比如我們有一個自訂的View,在這個View中有一個Point對象用於管理座標,然後在onDraw()方法中的座標就是根據該Pointde座標值進行繪製的。也就是說,如果我們可以對Point對象進行動畫操作,那麼整個自訂的View,那麼整個自繼承View的當前類就都有了動畫,但是我們的目的是不想讓View有動畫,只是對動畫中的Point座標產生動畫,這樣補間動畫就不能滿足了。
2:Tween Animation動畫有四種動畫操作(移動,縮放,旋轉,淡入淡出),但是我們現在有個需求就是將當前View的背景色進行改變呢?抱歉Tween Animation是不能協助我們實現的。
3:Tween Animation動畫只是改變View的顯示效果而已,但是不會真正的去改變View的屬性,舉個例子:我們現在螢幕的頂部有一個小球,然後通過補間動畫讓他移動到右下角,然後我們給這個小球添加了點擊事件,希望位置移動到右下角的時候點擊小球能的放大小球。但是點擊事件是絕對不會觸發的,原因是補間動畫只是將該小球繪製到了螢幕的右下角,實際這個小球還是停在螢幕的頂部,所以你在右下角點擊是沒有任何反應的。
針對於這些問題,Android在3.0版本之後引入了Property Animation(屬性動畫),通過Property Animation(屬性動畫)我們可以看出來,屬性動畫不再只是針對View進行設計的了,也就證明不只是限定在移動,縮放,旋轉和淡入淡出這幾種動畫的操作了,同時也不再只是一種視覺上的動畫效果了,屬性動畫其實是一種不斷地對值進行操作的機制,並將值賦到指定對象的指定屬性上,可以是任意對象的任意屬性。所以我們仍然可以對一個View進行移動和縮放,同時也可以對自訂View中的Point對象進行動畫操作了。我們只需要告訴系統動畫的運行時間長度,需要執行那種類型的動畫以及動畫的初始值和結束值。
Android三種動畫原理