Android之動畫機制

2021-10-02 10:18:55 字數 1784 閱讀 6166

特殊的動畫屬性

插值器估值器

注意事項

動畫區別

view動畫

作用物件是view,通過對場景裡的物件不停做圖形變換

從而產生動畫效果

幀動畫屬性動畫

動態改變物件的屬性從而達到動畫效果

1.layoutanimation:給viewgroup的子元素加上效果

2.activity切換效果:overridependingtransition(int enteranim ,int exitanim)

enteranim:開啟時載入的動畫資源id

exitanim:暫停時所需要的動畫資源id

== 注:== 這個方法必須在startactivity(intent)和finish()之後呼叫才會有效

在api11 之前。屬性動畫的本質還是view動畫

原理repeatcount:動畫的迴圈次數,預設值為0;-1為無限迴圈

repeatmode(動畫迴圈模式):restart:連續重複;reverse:逆向重複

時間插值器:根據時間流逝的百分比來計算出當前屬性值改變的百分比

線性插值器:勻速動畫

加速減速插值器:兩頭慢中間快

減速插值器:越來越慢

public

class

linearinterpolator

implements

interpolator

public

linearinterpolator

(context context,attributeset attrs)

public

float

getinterpolation

(float input)

}

插值器計算的主要是估值器需要的估值小數

typeevaluator:根據當前屬性改變的百分比計算改變後的屬性值

intevaluator:針對整形屬性

floatevaluator:針對浮點型屬性

argbevaluator:針對color屬性

public class intevaluator implements typeevaluator

}

對任意屬性做動畫

生效的兩個條件:

1.object必須提供setabc,如果沒有初始值,還需要提供getabc(不滿足的情況下,程式會直接crash)

2.object的setabc對屬性abc所做的改變必須啊能通過某種方法展示出來(不滿足無動畫效果,但程式不會crash)

解決方法:

1.在有許可權的情況下,給你的物件加上get,set方法(一般情況下是不可行的,因為這是android sdk內部實現的,是通過反射來進行呼叫的)

2.有乙個類包裝原始物件,間接為其提供get,set方法

3.採用valueanimator,監聽動畫過程,自己實現屬性的改變

1.oom:避免使用幀動畫

2.記憶體洩漏:無限迴圈動畫在activity退出時即時停止

3.相容性問題:3.0以下存在

4.view動畫:對view影像做動畫,不真正改變view狀態

5.不要使用px,盡量使用dp,使用px會導致在不同的裝置上看到不同的效果。

6.動畫元素互動:3.0以後,觸發事件的位置為移動後的位置,view東湖依舊在原位置

7.硬體加速:使動畫更加流暢

Android動畫機制

幀動畫 補間動畫 屬性動畫 過度動畫 animation框架定義了透明度 旋轉 縮放 位移等幾種常見的動畫 實現原理 通過矩陣運算完成幀動畫,如果動畫沒有完成,就繼續呼叫invalidate 函式,啟動下次繪製來驅動動畫,從而完成整個動畫的繪製。public class mainactivity e...

Android動畫之屬性動畫

補間動畫,只是乙個動畫效果,元件其實還在原來的位置上,xy沒有改變,屬性動畫則反之 import android.animation.animator import android.animation.animatorinflater import android.animation.animato...

Android 動畫之activity動畫

前面和大家簡單分析了android的控制項的動畫效果 補間動畫和屬性動畫 但是在開發過程中我們發現 控制項的動畫效果做的很好,但是在頁面跳轉的時候很不自然,我們尋求一種讓使用者有一種漸進的效果,我看開始使用頁面之間的動畫效果,也就是activity之間的動畫效果,給使用者一種很自然的感覺。在andr...