次の図は、アニメーションの実装に使用する API を決定する際に役立ちます。

次のディシジョン ツリーを使用して、ユースケースに最も適したアニメーション API を選択します。
- アニメーションはアートベース(SVG または画像)ですか?
- はい: シンプルな SVG(マイクロアニメーション付きのアイコン)を使用していますか?
- はい:
AnimatedVectorDrawable
。 - いいえ: サードパーティのアニメーション フレームワーク(
Lottie
など)。
- はい:
- いいえ: アニメーションを無限に繰り返す必要がありますか?
- はい:
rememberInfiniteTransition
。 - いいえ: レイアウトをアニメーション化していますか?
- はい: コンテンツが異なるコンポーザブルを切り替えていますか?
- はい: Navigation-Compose を使用していますか?
- 可能:
enterTransition
とexitTransition
が設定されたcomposable()
。 - いいえ:
AnimatedContent
、Crossfade
、Pager
。
- 可能:
- 「いいえ」の場合: コンテンツの表示または非表示をアニメーション化していますか?
- 可能:
Modifier.alpha()
でAnimatedVisibility
またはanimateFloatAsState
。 - いいえ: サイズ変更をアニメーション化していますか?
- はい:
Modifier.animateContentSize
。 - いいえ: 別のレイアウト プロパティ(オフセットやパディングなど)をアニメーション化していますか?
- はい: 「プロパティは互いに完全に独立していますか?」をご覧ください。
- いいえ: リストアイテムをアニメーション化していますか?
- はい:
- 可能:
- はい: Navigation-Compose を使用していますか?
- いいえ: 複数のプロパティをアニメーション化していますか?
- はい: プロパティは互いに完全に独立していますか?
- はい:
animate*AsState
。テキストの場合はTextMotion.Animated
を使用します。 - いいえ: 同時に開始する必要がありますか?
- はい:
AnimatedVisibility
、animateFloat
、animateInt
などのupdateTransition
- いいえ:
animateTo
を使用したAnimatable
。suspend 関数を使用して異なるタイミングで呼び出されます。
- はい:
- はい:
- 「いいえ」の場合: アニメーションに事前定義されたターゲット値はありますか?
- はい:
animate*AsState
。テキストにはTextMotion.Animated
を使用します。 - いいえ: アニメーションはジェスチャー駆動で、信頼できる唯一の情報源ですか?
- はい:
Animatable
はanimateTo
/snapTo
に置き換えます。 - いいえ: 状態管理のないワンショット アニメーションですか?
- はい:
AnimationState
またはanimate
。 - いいえ: 回答がここにない機能リクエストを送信します。
- はい:
- はい:
- はい:
- はい: プロパティは互いに完全に独立していますか?
- はい: コンテンツが異なるコンポーザブルを切り替えていますか?
- はい:
- はい: シンプルな SVG(マイクロアニメーション付きのアイコン)を使用していますか?
回路図の PDF 版をダウンロードします。