LayoutTransition 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
此類別能自動對 ViewGroup 物件的版面變更進行動畫。
[Android.Runtime.Register("android/animation/LayoutTransition", DoNotGenerateAcw=true)]
public class LayoutTransition : Java.Lang.Object
[<Android.Runtime.Register("android/animation/LayoutTransition", DoNotGenerateAcw=true)>]
type LayoutTransition = class
inherit Object
- 繼承
- 屬性
備註
此類別能自動對 ViewGroup 物件的版面變更進行動畫。 要啟用版面容器的轉換,請建立一個 LayoutTransition 物件,並透過呼叫 ViewGroup#setLayoutTransition(LayoutTransition)。 這會導致每當物品被加入或移除該容器時,預設動畫就會播放。 要指定自訂動畫,請使用這個 LayoutTransition#setAnimator(int, Animator) setAnimator() 方法。
這些過場動畫的核心概念之一是,有兩種不同的變化會導致轉換,以及因這些變化而運行的四種不同動畫。 觸發轉換的變更包括將項目加入容器(稱為「出現」轉換)或從容器中移除(也稱為「消失」轉換)。 設定視圖的可見性(介於 GONE 和 VISIBLE 之間)會觸發相同的新增/移除邏輯。 因為這些事件而執行的動畫有:一個是顯示新增物品的動畫,一個是移除物品的動畫,還有兩個是因為新增/移除事件而改變容器中其他物品的動畫。 使用者可能會希望物品變化時有不同的動畫,因為是因為事件出現或消失而改變,因此每種變化事件都有一個動畫。 本類別的大部分 API 都著重於設定這四種情況下所用動畫的基本屬性,或是為其中任一或全部設定自訂動畫。
預設情況下,消失動畫會立即開始,CHANGE_APPEARING動畫也是如此。 其他動畫則在設定為動畫預設時長的延遲後開始。 此行為促進了以下動畫的轉場:當物品被加入版面時,該容器的其他子節點會先移動(因此為新物品創造空間),接著出現動畫執行以動畫來動畫該物品。 相反地,當物品從容器中移除時,先執行移除該物品的動畫,接著是佈局中其他子節點的動畫(填補物品移除時造成的空隙)。 如果不希望採用預設的編舞行為, #setDuration(int, long) 任何或全部動畫的 and #setStartDelay(int, long) 都可以依情況調整。 不過要注意,如果你在消失動畫還沒完成前就開始出現動畫,消失動畫就會停止,消失動畫的效果也會被還原。 如果你在出現動畫完成前就開始了消失動畫,則出現動畫也會有類似的效果。
轉場指定的動畫,無論是預設動畫還是轉換物件上設定的任何自訂動畫,都僅為範本。 也就是說,這些動畫存在是為了保留基本的動畫屬性,例如時長、開始延遲以及正在動畫化的屬性。 但實際的目標物件,以及這些屬性的起始和結束值,都是在每次執行轉換設定過程中自動設定的。 每個動畫都是從原始複製複製而來,然後複製目標的動態值(例如因佈局事件而移動的配置容器中的某個物件)以及變化的值(例如該物件的位置和大小)。 每個動畫實際推送的值取決於動畫中指定的屬性。 例如,預設的CHANGE_APPEARING動畫會讓 left、 top、 rightbottom、 和 scrollXscrollY屬性都做動畫。 這些屬性的值會在轉換開始時更新為佈局前後的值。 自訂動畫也會同樣填入目標和被動畫的值,前提是它們使用的物件名稱是目標物件已知的。
此類別及容器相關的 XML 標誌 animateLayoutChanges =“true”,提供了一個簡單的工具,旨在在簡單情況下自動進行變更。 在巢狀視圖階層的多個層級使用 LayoutTransition 可能無法運作,因為各層級的佈局相互關聯。 此外,若容器在新增或移除物品時同時捲動,可能不適合使用此工具,因為 LayoutTransition 計算的前後位置可能與動畫結束時的實際位置不符,因為容器在動畫進行時被捲動。 你可以透過將CHANGE_APPEARING和CHANGE_DISAPPEARING動畫設為空,並適當設定其他動畫的 startDelay,來解決這個問題。
Java 文件 android.animation.LayoutTransition。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
建構函式
| 名稱 | Description |
|---|---|
| LayoutTransition() |
建構一個 LayoutTransition 物件。 |
| LayoutTransition(IntPtr, JniHandleOwnership) |
用於建立 JNI 物件受管理表示的建構器;由執行時呼叫。 |
欄位
| 名稱 | Description |
|---|---|
| Appearing |
已淘汰.
一個標示顯示容器中出現物品的動畫。 |
| ChangeAppearing |
已淘汰.
一個標示,表示因容器中出現新物品而改變的物品上運行的動畫。 |
| ChangeDisappearing |
已淘汰.
一個旗標,表示因物品從容器中消失而改變的物品所執行的動畫。 |
| Changing |
已淘汰.
一個標示因配置變更而變動的物品所執行的動畫,這些物品並非因物品被加入或移除容器而改變。 |
| Disappearing |
已淘汰.
一個標示在那些從容器中消失的物品上運行的動畫旗標。 |
屬性
| 名稱 | Description |
|---|---|
| Class |
回傳此 |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| IsChangingLayout |
如果正在執行動畫,則會回傳真值,動畫會讓與版面相關的屬性產生動畫。 |
| IsRunning |
如果此轉換中的任何動畫正在執行,則會回傳為真。 |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 (繼承來源 Object) |
| JniManagedPeerState |
此類別能自動對 ViewGroup 物件的版面變更進行動畫。 (繼承來源 JavaObject) |
| JniPeerMembers |
此類別能自動對 ViewGroup 物件的版面變更進行動畫。 |
| PeerReference |
取得這個 Java 節點的 JNI 物件參考。 (繼承來源 Object) |
| ThresholdClass |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
| ThresholdType |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
| TransitionListeners |
取得目前版面變更的監聽者清單。 |
方法
事件
| 名稱 | Description |
|---|---|
| EndTransition |
此類別能自動對 ViewGroup 物件的版面變更進行動畫。 |
| StartTransition |
此類別能自動對 ViewGroup 物件的版面變更進行動畫。 |
明確介面實作
| 名稱 | Description |
|---|---|
| IJavaPeerable.Disposed() |
此類別能自動對 ViewGroup 物件的版面變更進行動畫。 (繼承來源 JavaObject) |
| IJavaPeerable.Finalized() |
此類別能自動對 ViewGroup 物件的版面變更進行動畫。 (繼承來源 JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
此類別能自動對 ViewGroup 物件的版面變更進行動畫。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
此類別能自動對 ViewGroup 物件的版面變更進行動畫。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
此類別能自動對 ViewGroup 物件的版面變更進行動畫。 (繼承來源 JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
此類別能自動對 ViewGroup 物件的版面變更進行動畫。 (繼承來源 JavaObject) |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
此類別能自動對 ViewGroup 物件的版面變更進行動畫。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |