編輯:關於Android編程
view動畫系統提供了僅動畫View對象的能力,所以如果你想動畫非View對象,你就要自己實現代碼。view動畫系統實際上還被強制僅能對View的少數屬性進行動畫,比如縮放和旋轉,而不能對背景色進行。
view動畫的另一個壞處是它僅修改View的繪制位置,而不是View的實際位置。例如,如果你動畫一個移動穿越屏幕,button的繪制位置是正確的,但實際你可以點擊它的位置卻沒有變,所以你必須去實現你自己的邏輯來處理它。
使用屬性動畫系統時,這個限制被完全解除了,並且你可以動畫任何對象的任何屬性(View或非View)並且對象本身也會實際上被修改。並且屬性動畫系統本身對動畫的支持也更有力度。在高層,你分配動畫到要動畫的屬性上,比如顏色,位置、或大小然後定義動畫的參數比如插值算法以及多個動畫的同步。
然而,view動畫系統只需要少量時間來設置並且不需要太多的代碼。如果view動畫完全滿足你的需求,或在你的舊代碼中能按你想的工作,那麼就不需要使用屬性動畫系統。也有可能在某些情況下需要同時用到這兩種動畫系統。
你可以在android.animation找到大部分的屬性動畫系統的API。因為view動畫系統已經在android.view.animation定義了很多插值算法,你也可以在屬性動畫系統中使用它們。下面的表中描述了屬性動畫系統的主要組成。
Animator類提供了創建動畫的基礎。你一般不應直接使用此類,因為它僅提供了最少的功能。下面的子類們都是從Animator派生的。
表1.Animators
類
描述
ValueAnimator
屬性動畫的主要基類。它計算要動畫的屬性的值。它具有所有計算動畫的值的核心函數,它包含每次動畫的時間信息、是否重復播放、接收更新事件的監聽器等參數,還能設置如何計算自定義類型。動畫一個屬性要做兩條:計算動畫的值和設置這些值到對象或屬性上。ValueAnimator不負責第二條,所以你必須偵聽ValueAnimator對值的更新然後按你的邏輯在修改你要動畫的對象。
ObjectAnimator
ValueAnimator的一個子類。允許你設置要動畫的目標對象和對象的屬性。此類會在計算出動畫的新值時更新屬性。大多數時候你應選擇使用ObjectAnimator,因為用它處理對象的動畫更加容易。然而,你某些時候可能想直接使用ValueAnimator,因為ObjectAnimator具有很多限制,比如需要對象具有特定的操作器方法。
AnimatorSet
提供了一個控制動畫組中動畫關系的機制。你可以設置多個動畫一起播放、分別播放、或延遲播放。
Evaluator告訴屬性動畫系統如何計算某個屬性的值。它們跟據Animator類提供的時間信息,動畫的開始值和結束值計算動畫的值。屬性動畫系統提供了以下evaluator:
表2.Evaluator們
Class/Interface
Description
IntEvaluator
計算int型屬性的默認evaluator。
FloatEvaluator
計算float型屬性的默認evaluator。
ArgbEvaluator
計算用十六進制值表示的顏色屬性的默認evaluator。
TypeEvaluator
一個允許你創建自己的evaluator的接口。如果你要動畫的對象的屬性非int,float、或color,你就必須實現TypeEvaluator接口來定義如何計算對象屬性的動畫值。如果你想改變處理int,float,和color屬性的默認行為,你也可以為它們指定自定義的TypeEvaluator。
時間插值器定義了時間函數如何計算動畫的值。例如,你可以指定動畫過程是線性的發生,這表示動畫均勻的運動;或者指定非線性的時間,例如,開始時加速,結束時減速。表3描述了在android.view.animation中的插值器們。如果現有的插值器不能滿足你,你可以實現接口TimeInterpolator來創建你自己的插值器。
Table3.插值器們
類/接口
描述
AccelerateDecelerateInterpolator
中間快兩頭慢的插值器。
AccelerateInterpolator
一直加速的插值器。
AnticipateInterpolator
先向後再猛向前的插值器。
AnticipateOvershootInterpolator
先向後,再猛向前,超過結束值後再回到結束值的插值器。
BounceInterpolator
最後跳一下的插值器。
CycleInterpolator
重復循環播放的插值器。
DecelerateInterpolator
一直減速的插值器。
LinearInterpolator
定速播放的插值器。
OvershootInterpolator
先猛向前直到超過結束值然後再回到開始值的插值器。
TimeInterpolator
讓你能實現自己的插值器的接口。
在之前的Android超精准計步器開發-Dylan計步中的首頁用到了一個自定義控件,和QQ運動的界面有點類似,還有動畫效果,下面就來講一下這個View是如何繪制的。1.先
iMAG是一個非常簡潔高效的移動跨平台開發框架,開發一次可以同時兼容Android和iOS平台,有點兒Web開發基礎就能很快上手。當前移動端跨平台開發的框架有很多,但用i
聽說不會單元測試的Android程序員不是一個合格的程序員,,好吧,雖然學習Android好久,最近在使用AndroidStudio,但不知道AndroidStudio自
android的開發模式,也就是項目最基本的構建模式,也不是說需要固定不變的模式,在項目中可以靈活運用。而MVP開發模式屬於MVC的變種升級,其相對於mvc模式來說,更高