天天看點

Property Animation要點總結

1. 你可以在任何空間上使用這個動畫來改變這些控件的屬性值,比如長和寬等内容,而不用管這個動畫所綁定的控件是通過xml定義的還是通過自己draw的控件

2. 為了定義空間的動畫,你必須知道空間的屬性值,以及你需要自己設定這些動畫的有效時間等内容,預設的動畫間隔是300ms

3.Time interpolation這個值表示的是how the values for the property are calculated as a function of the animation's current elapsed time.

4. 你可以通過設定一些東西來實作重複次數和動畫行為

5. 工作原理:

Property Animation要點總結

            上圖是平穩動畫,每個圖的間隔時間都是10ms,比如我的寬度是每10ms增加10px,但是在這動畫裡面還可以設定不同的增加模式,比如下圖的

Property Animation要點總結

     這個就是不規則的增加了,這個就和我們上面談到的Time interpolation有重要的聯系了,至于為什麼下面我們會說到

    為了了解這個動畫,我們首先要知道

ValueAnimator

這個的對象,這個對象的作用如下:

   (1)跟蹤監測你這個動畫運作了多久,以及将監聽的東西送出給一個接口,就是updateListener這個接口

   (2)其中的一個屬性

TimeInterpolator

定義了每時每刻被綁定空間的動畫是怎麼樣的,以及控件目前動畫的狀态是怎麼養的,比如我現在的寬度是40dp,還有就是我這個動    畫的下一刻的規則是怎樣的,這和它本身的一些方法是有關的,具體的東西還是需要大家仔細讀文檔的

     比如,我們的第二個圖就是有

TimeInterpolator

中的

AccelerateDecelerateInterpolator

TypeEvaluator

控制的,流程是這樣的,首先我們綁定動畫(綁定這個詞不知道合不合适),然後計算這個時間根據

AccelerateDecelerateInterpolator

計算出時間因子,然後通過調用

TypeEvaluator

中的IntEvaluator(This evaluator can be used to perform type interpolation between

int

values.)進而實作這個動畫效果的。

6.流程

(1)首先執行個體化

ValueAnimator

對象,然後給出你想在某個時間間隔内某個屬性值的變化範圍,比如開始是多少,結束是多少,然後調用

start()

方法來确定動畫的開始

(2)

ValueAnimator

這個對象同時會将百分比時間,記錄多長時間和剩餘多長時間

(未完待續)