關於TranslateAnimation幾個建構函式的理解
來源:互聯網
上載者:User
在android動畫中,最常用的一個莫不是TranslateAnimation了,這個類主要負責實現控制項的動態位移,經常被用做指標的移動動畫。比如qq安卓用戶端的指標,如。
關於TranslateAnimation幾個建構函式的參數意義,曾困惑我不少時間,參考官方文檔和網上的講解,通過實驗總結出一些自己的理解,如果有誤敬請指正。
TranslateAnimation共有三個建構函式,分別是:
其中,我們最常用的是後兩個,現在主要想說明一下我對後兩個函數參數的理解。
先說第二個建構函式:TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, floattoYDelta)。
Delta,顧名思義表示的是一個後一個和前一個的差值。XDelta即表示在X方向上的差值,同理YDelta表示在Y方向的差值。若XDelta>0,則說明控制項向右側發生移動,否則向左側移動,Y軸方向是相同的道理。現在來說下各個參數的意思:
fromXDelta:控制項的開始移動前的位置,為什麼是Delta呢?因為在此之前,該控制項可能已經發生過了位移,因此它已經偏離了控制項最初始的位置。因此採用了距離最初始位置的位移量。
toXDelta:相同道理,想要移動的終點位置距離最初始位置的位移量。記住,一定不要混淆的是,不要把這個最初始位置當成是移動開始前控制項的位置,否則將會發生錯誤移動。
後面兩個參數表示Y方向上的,和X方向上的同理。需要說明的是,這個是絕對位移量,是以像素為單位進行計算的。
再來說說第三個建構函式。
當X方向或者Y方向上的Type選擇為Animation.ABSOLUTE時候,表示為絕對像素,此時XValue和YValue參數的含義和第二個建構函式相同。
而當X方向或者Y方向上的Type選擇為Animation.RELATIVE_TO_SELF或者 Animation.RELATIVE_TO_PARENT時候,則表示相位移量了,舉個例子來說,如果在X方向上選擇Animation.RELATIVE_TO_SELF,那麼當XValue=1.0f時,則位移量為一個自身寬度。如果在X方向上選擇Animation.RELATIVE_TO_PARENT時,則位移量為一個父控制項寬度。Y方向是相同的道理,只是把寬度換成了高度而已。