Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> android動畫詳解三 動畫API概述

android動畫詳解三 動畫API概述

編輯:關於android開發

android動畫詳解三 動畫API概述


·屬性動畫與view動畫的不同之處

view動畫系統提供了僅動畫View對象的能力,所以如果你想動畫非View對象,你就要自己實現代碼。view動畫系統實際上還被強制僅能對View的少數屬性進行動畫,比如縮放和旋轉,而不能對背景色進行。

view動畫的另一個壞處是它僅修改View的繪制位置,而不是View的實際位置。例如,如果你動畫一個移動穿越屏幕,button的繪制位置是正確的,但實際你可以點擊它的位置卻沒有變,所以你必須去實現你自己的邏輯來處理它。

使用屬性動畫系統時,這個限制被完全解除了,並且你可以動畫任何對象的任何屬性(View或非View)並且對象本身也會實際上被修改。並且屬性動畫系統本身對動畫的支持也更有力度。在高層,你分配動畫到要動畫的屬性上,比如顏色,位置、或大小然後定義動畫的參數比如插值算法以及多個動畫的同步。

然而,view動畫系統只需要少量時間來設置並且不需要太多的代碼。如果view動畫完全滿足你的需求,或在你的舊代碼中能按你想的工作,那麼就不需要使用屬性動畫系統。也有可能在某些情況下需要同時用到這兩種動畫系統。

·API概覽

你可以在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

讓你能實現自己的插值器的接口。


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved