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