1. 程式人生 > >API 25 (Android 7.1.1 API) animation.Animator

API 25 (Android 7.1.1 API) animation.Animator



Android API 25 (Android 7.1.1 API)

Animator

public abstract class Animator

extends Object implements Cloneable

java.lang.Object

   ↳android.animation.Animator

已知直接子類:

AnimatorSet

ValueAnimator

概述

這是為動畫提供基本支援類的超類,可以啟動結束並向其新增AnimatorListeners

內部類

介面 Animator.AnimatorListener

動畫監聽器接收來自動畫的通知。

介面 Animator.AnimatorPauseListener

暫停偵聽器在動畫暫停或恢復時從動畫接收通知。

【公共建構函式】

Animator()

【公共方法】

addListener

void addListener (Animator.AnimatorListener listener)

API 11

將監聽器新增到在動畫生命週期中傳送事件的監聽器集合,例如startrepeatend

addPauseListener

void addPauseListener (Animator.AnimatorPauseListener listener)

API 19

給動畫新增暫停監聽器。

getListeners

ArrayList<Animator.AnimatorListener> getListeners ()

API 11

獲取當前正在監聽此Animator物件上的事件的Animator.AnimatorListener物件集。

removeListener

void removeListener (Animator.AnimatorListener listener)

API 11

從監聽此動畫的集合中刪除監聽器。

removePauseListener

void removePauseListener (Animator.AnimatorPauseListener listener)

API 19

從監聽此動畫的集合中刪除暫停監聽器。

removeAllListeners

void removeAllListeners ()

API 11

從此物件中刪除所有監聽器和pauseListeners

getDuration

long getDuration ()

API 11

獲取動畫的持續時間。

setDuration

Animator setDuration (long duration)

API 11

設定動畫的持續時間。

getTotalDuration

long getTotalDuration ()

API 24

獲取動畫的總持續時間,考慮動畫序列,開始延遲和重複。 如果持續時間為無限,則返回DURATION_INFINITE

getInterpolator

TimeInterpolator getInterpolator ()

API 18

返回此動畫使用的時間插值器。

setInterpolator

void setInterpolator (TimeInterpolator value)

API 11

時間內插器用於計算動畫的已過分數。 內插器確定動畫是否以線性或非線性運動(例如加速和減速)執行。 預設值為AccelerateDecelerateInterpolator

getStartDelay

long getStartDelay ()

API 11

呼叫start()之後延遲處理動畫的時間(以毫秒為單位)。

setStartDelay

void setStartDelay (long startDelay)

API 11

呼叫start()之後延遲處理動畫的時間(以毫秒為單位)。

isStarted

boolean isStarted ()

API 14

返回此Animator是否已啟動且尚未結束。

對於可重複使用的Animator(除了通過createCircularReveal()生成的一次性Animator之外,大多數Animator,這個狀態是isRunning()的超集,因為具有非零startDelayAnimator在延遲期間將返回isStarted 相位,而isRunning()將只有在延遲階段完成後才會返回true。 不可重複使用的動畫器在啟動後總是返回true,因為它們不能返回到非啟動狀態。

isRunning

boolean isRunning ()

API 11

返回此Animator當前是否正在執行(已經開始並且已經超過任何初始startDelay週期但尚未結束)。

isPaused

boolean isPaused ()

API 19

返回此Animator當前是否處於暫停狀態。

start

void start ()

API 11

開始本動畫。 如果動畫具有非零的startDelay,則動畫將在延遲結束後開始執行。 非延遲動畫將立即設定其初始值,然後呼叫onAnimationStart(Animator)用於此Animator的任何監聽器。

通過呼叫此方法開始的動畫將在呼叫此方法的執行緒上執行。 這個執行緒應該有一個Looper(如果不是這種情況,會丟擲一個執行時異常)。 此外,如果動畫將對檢視層次結構中物件的屬性進行動畫處理,則呼叫執行緒應該是該檢視層次結構的UI執行緒。

pause

void pause ()

API 19

暫停正在執行的動畫。 此方法應該只在動畫開始的同一個執行緒上呼叫。 如果動畫尚未開始或者已經結束,則忽略該呼叫。 暫停的動畫可以通過呼叫resume()恢復。

resume

void resume ()

API 19

恢復已暫停的動畫,使 animator在暫停時從中斷的位置繼續。 此方法應該只在動畫開始的同一個執行緒上呼叫。 對當前未暫停的animatorresume()呼叫將被忽略。

cancel

void cancel ()

API 11

取消動畫。 end()不同,cancel()使動畫在其軌道中停止,向其偵聽器傳送onAnimationCancel(Animator),然後是

onAnimationEnd(Animator)訊息。

必須在執行動畫的執行緒上呼叫此方法。

end

void end ()

API 11

結束動畫。 這將導致動畫分配正在動畫屬性的結束值,然後在其偵聽器上呼叫onAnimationEnd(Animator)方法。

必須在執行動畫的執行緒上呼叫此方法。

clone

Animator clone ()

API 11

建立並返回此物件的副本。

“複製”的精確含義可以取決於物件的類。 一般的意圖是,對於任何物件x,表示式:

 x.clone() != x

將是真實的,並且表示式:

 x.clone().getClass() == x.getClass()

將是真的,但這些不是絕對的要求。 雖然通常的情況是:

 x.clone().equals(x)

將是真的,這不是絕對的要求。

按照慣例,返回的物件應該通過呼叫super.clone獲得。 如果一個類及其所有的超類(除了Object)遵循這個約定,將會是 x.clone().getClass() == x.getClass().

按照慣例,此方法返回的物件應該獨立於此物件(正在克隆)。為了實現這種獨立性,可能需要在返回super.clone之前修改該物件的一個或多個欄位。通常,這意味著複製包含正在克隆的物件的內部“深層結構”的任何可變物件,並使用對副本的引用替換對這些物件的引用。如果類只包含基本欄位或對不可變物件的引用,則通常情況下,super.clone返回的物件中沒有欄位需要修改。

Object的方法克隆執行特定的克隆操作。首先,如果此物件的類未實現介面Cloneable,則會丟擲CloneNotSupportedException。注意,所有陣列都被認為實現了Cloneable介面,並且陣列型別T []clone方法的返回型別是T [],其中T是任何引用或原始型別。否則,此方法將建立此物件的類的一個新例項,並使用此物件的相應欄位的內容(如通過賦值)完全初始化其所有欄位;欄位的內容本身不被克隆。因此,該方法執行該物件的“淺拷貝”,而不是“深拷貝”操作。

Object本身不實現介面Cloneable,因此在類為Object的物件上呼叫clone方法將導致在執行時丟擲異常。

setTarget

void setTarget (Object target)

API 11

設定其屬性將由此動畫進行動畫處理的目標物件。 不是所有的子類都對目標物件進行操作(例如,ValueAnimator,但是這個方法在超類上,為的是方便地處理那些處理目標的子類。

注意:目標作為弱引用儲存在內部,以避免由於動畫師直接引用舊目標而導致的資源洩露。 因此,您應該確保animator目標總是在其他地方有一個硬引用。

setupEndValues

void setupEndValues ()

API 11

此方法告訴物件使用適當的資訊來提取動畫的結束值。 例如,

AnimatorSet物件將該呼叫傳遞給它的子物件,以告訴他們設定值。

ObjectAnimator物件將使用其有關其目標物件和PropertyValuesHolder物件的資訊來獲取其屬性的結束值。

ValueAnimator物件將忽略該請求,因為它沒有足夠的資訊(例如目標物件)來收集這些值。

setupStartValues

void setupStartValues ()

API 11

此方法告訴物件使用適當的資訊來提取動畫的起始值。 例如,

AnimatorSet物件將該呼叫傳遞給它的子物件,以告訴他們設定值。

ObjectAnimator物件將使用其有關其目標物件和PropertyValuesHolder物件的資訊來獲取其屬性的起始值。

ValueAnimator物件將忽略該請求,因為它沒有足夠的資訊(例如目標物件)來收集這些值。