android動畫詳解三 動畫API概述

來源:互聯網
上載者:User

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

讓你能實現自己的插值器的介面。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.