下の図は、アニメーションの実装に使用する API を決定する際に役立ちます。
以下のディシジョン ツリーの質問に沿って、ユースケースに最適なアニメーション API を選択してください。
- アニメーションはアートに似ており、多くの視覚要素(SVG や画像など)で構成されていますか?
- はい: シンプルな SVG(マイクロアニメーションを使用したアイコン)はありますか?
- ○:
AnimatedVectorDrawable
- ×: サードパーティのアニメーション フレームワーク(
Lottie
など)
- ○:
- いいえ: 繰り返し行う必要はありますか?
- ○:
rememberInfiniteTransition
- いいえ: これはレイアウト アニメーションですか?
- はい: 異なるコンテンツを持つ複数のコンポーザブル間で変更しますか?
- はい: ナビゲーション作成ではどうしますか?
- ○:
enterTransition
とexitTransition
が設定されたcomposable()
- いいえ:
AnimatedContent
、Crossfade
、またはPager
- ○:
- いいえ: 出現 / 消失をアニメーション化していますか?
- ○:
Modifier.alpha()
でAnimatedVisibility
またはanimateFloatAsState
- ×: サイズをアニメーション化しますか?
- ○:
Modifier.animateContentSize
- 不可: 他のレイアウト プロパティ(オフセット、パディングなど)
- はい: 「プロパティは互いに完全に独立しているのですか?」をご覧ください。
- いいえ: リストアイテムのアニメーションは必要ですか?
- ○:
animateItemPlacement()
(並べ替えと削除は近日提供予定)
- ○:
- ○:
- ○:
- はい: ナビゲーション作成ではどうしますか?
- いいえ: 複数のプロパティをアニメーション化する必要がありますか?
- はい: プロパティは互いに完全に独立していますか?
- ○:
animate*AsState
。テキストにはTextMotion.Animated
を使用します。 - いいえ: 同じ時刻に開始しますか?
- ○: ○:
updateTransition
(AnimatedVisibility
、animateFloat
、animateInt
など) - ×:
Animatable
とanimateTo
が異なるタイミングで呼び出される(suspend 関数を使用)
- ○: ○:
- ○:
- いいえ: アニメーションには、事前に定義されたターゲット値がありますか?
- ○:
animate*AsState
。テキストにはTextMotion.Animated
を使用します。 - いいえ: ジェスチャーによるアニメーションですか?アニメーションが唯一の信頼できる情報源ですか。
- 可:
animateTo
/snapTo
でAnimatable
- いいえ: 状態管理なしのワンショット アニメーションですか?
- ○:
AnimationState
またはanimate
- いいえ: ここにないと回答されますか?機能リクエストの提出
- ○:
- 可:
- ○:
- はい: プロパティは互いに完全に独立していますか?
- はい: 異なるコンテンツを持つ複数のコンポーザブル間で変更しますか?
- ○:
- はい: シンプルな SVG(マイクロアニメーションを使用したアイコン)はありますか?
図の PDF 版をダウンロードします。