Kotlin

Jetpack Compose アニメーション入門:Visibility・State・Transition・Infinite の全体像と実装例

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

アニメーションのカテゴリと公式ドキュメント

Compose のアニメーションは 4 つの大分類 に分かれます。公式ガイド(Android Developers – Compose Animation)では、各カテゴリごとのサンプルとベストプラクティスが網羅されています。

カテゴリ 主な API 用途の例
Visibility AnimatedVisibility 条件に応じた表示・非表示のフェードやスライド
State animate*AsStateanimateDpAsState など) 単一プロパティの変化を自動補間
Transition updateTransition 複数状態・複数プロパティを同時に遷移
Infinite rememberInfiniteTransition 永続的なローディングやバウンスエフェクト

単一プロパティのアニメーション

1. AnimatedVisibility で if 文を書き換える

  • 効果:条件分岐だけでフェードイン・アウトが自動付与され、コード量が約 30 % 削減。
  • ポイントenter/exit に好きなアニメーション(スライドや拡大縮小)を組み合わせられる。

2. animate*AsState 系関数で単一プロパティを補間


複数状態遷移 – updateTransition

実装例:カードの 4 状態管理

  • ポイント
  • updateTransition が状態遷移を検知し、各プロパティごとに別々のイージングやスプリングを設定できる。
  • transitionSpec は「状態 A → 状態 B」だけに特化した仕様を書けるため、細かい UX チューニングが可能。

  • 参考:公式ドキュメントの Transition API


無限・繰り返しアニメーション

1. rememberInfiniteTransition(永続的なエフェクト)

  • 備考:Compose 1.6 では内部実装が最適化され、CPU 使用率は従来と同程度かやや低減されています(公式リリースノート参照)。

2. repeatable で回数限定のアニメーション

  • iterations で回数を明示でき、完了後は自動的に停止します。

3. デフォルト設定の変更点(Compose 1.6)

Spec 従来 (≤ 1.5) 1.6 以降
tween のデフォルト duration 300 ms 250 ms(公式リリースで調整)
spring のデフォルト dampingRatio MediumBouncy LowBouncy

必要に応じて旧バージョンと同等の挙動を保ちたい場合は、animationSpec = tween(300) などと明示してください。
詳細は Compose 1.6 Release Notes を参照。


デバッグと Layout Inspector の活用法

Layout Inspector でアニメーションを可視化

公式ツールの Animation タブは、実行中の Transition のパラメータや現在のフレームをスローモーションで確認できます。手順は次の通りです。

  1. デバイス/エミュレータで対象アプリを起動
  2. Run > Attach debugger to Android Process でデバッグ接続
  3. メニュー View → Tool Windows → Layout Inspector を開く
  4. 左上の Refresh ボタンで UI ツリー取得
  5. 任意の Compose 要素を選択し、右ペインの Animation タブへ切替
  6. 「Play」ボタンでスローモーション再生、各アニメーションの durationeasing が一覧表示される

公式ガイド: Inspect Compose UI with Layout Inspector

デバッグ時のベストプラクティス

手法 内容
State ログ Log.d("Anim", "alpha=$alpha") で状態遷移を可視化
テストタグ Modifier.testTag("myBox") → Layout Inspector の検索に利用
プレビューのスローモーション Android Studio の「Preview」画面右上で速度調整可能

XML から Compose への移行チェックリスト

項目 XML の書き方 Compose への変換例
開始タイミング animator.start() 状態 (visible = true) が変化した瞬間に自動開始
イージング <interpolator> タグ tween(easing = ...) または spring
繰り返し回数 repeatCount 属性 infiniteRepeatable / repeatable(iterations = n)
キャンセル animator.cancel() 状態が変わらなくなると自動停止(例: visible = false
スコープ管理 AnimatorSet updateTransition で複数プロパティを同時遷移

実装サンプル比較


サンプルコードの入手先とセットアップ手順

公開リポジトリ

  • GitHub: https://github.com/androidx/compose-samples
  • animation ディレクトリに本稿で紹介した各サンプル(AnimatedVisibility、State、Transition、Infinite)が収録されています。
  • README に Compose 1.6 用の Gradle 設定例と Layout Inspector の有効化手順が記載。

ローカル環境構築手順

  1. リポジトリをクローン

bash
git clone https://github.com/androidx/compose-samples.git
cd compose-samples/animation

  1. Android Studio でプロジェクトを開く
  2. File > Open → 上記フォルダを選択。

  3. 依存関係の確認(build.gradle.kts)

kotlin
implementation("androidx.compose.ui:ui:1.6.0")
implementation("androidx.compose.animation:animation:1.6.0")
implementation("androidx.activity:activity-compose:1.8.0")

  1. Sync 後にデバイス/エミュレータで実行
  2. DemoApp の各画面からサンプルを確認でき、同時に Layout Inspector でアニメーションを検証可能。

まとめ

  • Compose のアニメーションは Visibility / State / Transition / Infinite の四カテゴリに整理されており、公式ガイドが充実している。
  • AnimatedVisibilityanimate*AsState は最もシンプルで、条件分岐や単一プロパティの変化をすぐにアニメーション化できる。
  • 複数状態・複数プロパティは updateTransition で一括管理し、transitionSpec を使って細かいイージングやスプリングを個別指定できる。
  • 無限アニメーションは rememberInfiniteTransitionrepeatable の組み合わせで実装し、Compose 1.6 の最適化によりパフォーマンスへの影響は低減。
  • デバッグは Layout Inspector の Animation タブが最も直感的で、状態遷移の可視化に有効。
  • XML からの移行は「開始タイミング・イージング・繰り返し回数」の三点をチェックすればスムーズに完了できる。
  • 実装例は androidx/compose-samples に公開されているので、クローンしてそのまま Android Studio で試せる。

次のステップ:上記リポジトリをローカルにクローンし、DemoApp の各画面を操作しながら自分の UI に適用できるパターンを見つけてみましょう。


本稿の情報は 2024 年 11 月時点の公式資料に基づいています。Compose のバージョンが上がった際は、リリースノートで API の変更点をご確認ください。

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Kotlin