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. 工作原理:
上圖是平穩動畫,每個圖的間隔時間都是10ms,比如我的寬度是每10ms增加10px,但是在這動畫裡面還可以設定不同的增加模式,比如下圖的
這個就是不規則的增加了,這個就和我們上面談到的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
這個對象同時會将百分比時間,記錄多長時間和剩餘多長時間
(未完待續)