下圖可協助您決定要使用哪個 API 實作動畫。
請參考下方的決策樹狀圖問題,選擇最適合您用途的動畫 API:
- 我的動畫含有許多視覺元素 (例如 SVG 或圖片),比較像是藝術?
- 是:這項工具是否有簡易的可擴充向量圖形 (例如含有微型動畫的圖示)
- 是:
AnimatedVectorDrawable
- 否:第三方動畫架構,例如
Lottie
- 是:
- 否:是否需要永久重複執行這項動作?
- 是:
rememberInfiniteTransition
- 否:這是版面配置動畫嗎?
- 是:要變更含有不同內容的多個可組合項嗎?
- 是:使用導覽撰寫功能時嗎?
- 是:
composable()
、enterTransition
和exitTransition
已設定 - 不參加:
AnimatedContent
、Crossfade
或Pager
- 是:
- 否:為外觀 / 消失動畫效果加上動畫效果?
- 是:
AnimatedVisibility
或animateFloatAsState
(搭配Modifier.alpha()
) - 否:要製作大小動畫嗎?
- 是:
Modifier.animateContentSize
- 否:其他版面配置屬性?例如偏移、邊框間距等
- 是:請參閱「這些資源是否彼此完全獨立?」
- 否:列出項目動畫?
- 是:
animateItemPlacement()
(即將推出重新排序及刪除)
- 是:
- 是:
- 是:
- 是:使用導覽撰寫功能時嗎?
- 否:您是否需要為多個屬性建立動畫?
- 是:這些屬性是否完全獨立?
- 是:
animate*AsState
;如要傳送文字,請使用TextMotion.Animated
- 否:同時開始直播?
- 是:是:
updateTransition
和AnimatedVisibility
、animateFloat
、animateInt
等 - 否:具有
animateTo
的Animatable
以不同時間呼叫 (使用暫停函式)
- 是:是:
- 是:
- 否:動畫是否有一組預先定義的目標值?
- 是:
animate*AsState
;如要傳送文字,請使用TextMotion.Animated
- 否:手勢導向動畫?動畫是唯一的可靠來源嗎?
- 是:
Animatable
(animateTo
/snapTo
) - 否:只有一個未經管理的狀態的動畫動畫?
- 是:
AnimationState
或animate
- 否:這裡沒有答案嗎?提出功能要求
- 是:
- 是:
- 是:
- 是:這些屬性是否完全獨立?
- 是:要變更含有不同內容的多個可組合項嗎?
- 是:
- 是:這項工具是否有簡易的可擴充向量圖形 (例如含有微型動畫的圖示)
下載圖表的 PDF 版本。