予測型「戻る」を設定する

予測型「戻る」アニメーションを有効にするには、予測型「戻る」ジェスチャーのサポートをオプトインする必要があります。オプトインするには、AndroidManifest.xml ファイル内の <application> タグまたは個々の <activity> タグに android:enableOnBackInvokedCallback="true を追加します。

デフォルトのシステム アニメーションを有効にする

ホームに戻る、アクティビティ間、タスク間のシステム アニメーションは、サポートされている戻る処理 API に移行したアプリの場合、Android 15 以降のデバイスで利用できます。

  • ホームに戻る: ホーム画面に戻ります。
  • アクティビティ間: アプリ内のアクティビティ間の遷移。
  • クロスタスク: タスク間の遷移。

これらのアニメーションは、Android 15 以降ではデフォルトで有効になっています。Android 13 または 14 を搭載したデバイスでは、ユーザーは開発者向けオプションで有効にできます。

システム アニメーションを取得するには、AndroidX Activity の依存関係を 1.6.0 以降に更新します。

Navigation Compose で予測型「戻る」を有効にする

Navigation Compose で予測型「戻る」を使用するには、navigation-compose 2.8.0 ライブラリ以降を使用していることを確認してください。

ユーザーが後方にスワイプすると、ナビゲーション Compose で画面間のクロスフェードが自動的に実行されます。

図 2. SociaLite のデフォルトのクロスフェード アプリ内アニメーション。

ナビゲーション時に、popEnterTransitionpopExitTransition を使用してカスタム遷移を作成できます。これらの修飾子を NavHost に適用すると、画面の開始と終了のアニメーション方法を定義できます。これらを使用して、スケーリング、フェード、スライドなどのさまざまな効果を作成できます。

この例では、popExitTransition 内で scaleOut を使用して、ユーザーが戻る操作を行うと終了画面を縮小します。また、transformOrigin パラメータは、スケーリング アニメーションが行われるポイントを決定します。デフォルトでは、画面の中央(0.5f, 0.5f)です。この値を調整して、別のポイントからスケーリングを開始できます。

NavHost(
    navController = navController,
    startDestination = Home,
    popExitTransition = {
        scaleOut(
            targetScale = 0.9f,
            transformOrigin = TransformOrigin(pivotFractionX = 0.5f, pivotFractionY = 0.5f)
        )
    },
    popEnterTransition = {
        EnterTransition.None
    },
    modifier = modifier,
)

このコードの結果は次のようになります。

図 3. SociaLite のカスタム アプリ内アニメーション。

popEnterTransitionpopExitTransition は、たとえば「戻る」ジェスチャーでバックスタックをポップする際のアニメーションを制御します。enterTransitionexitTransition を使用して、予測型「戻る」だけでなく、一般的なコンポーザブルの開始と終了のアニメーションを定義することもできます。enterTransitionexitTransition のみを設定した場合は、通常のナビゲーションとバックスタックのポップアップの両方に使用されます。ただし、popEnterTransitionpopExitTransition を使用すると、戻るナビゲーションに固有のアニメーションを作成できます。

共有要素遷移と統合する

共有要素遷移は、共有コンテンツを含むコンポーザブル間にスムーズな視覚的なつながりを提供します。これは、ナビゲーションによく使用されます。

図 4. Navigation Compose での予測型「戻る」による共有要素の遷移。

Navigation Compose で共有要素を使用するには、共有要素による予測型「戻る」をご覧ください。

マテリアル Compose コンポーネントで予測型「戻る」をサポートする

マテリアル Compose ライブラリの多くのコンポーネントは、予測型「戻る」ジェスチャーとシームレスに動作するように設計されています。これらのコンポーネントで予測型「戻る」アニメーションを有効にするには、最新の Material3 依存関係(androidx.compose.material3:material3-*:1.3.0 以降)をプロジェクトに含めます。

予測型「戻る」アニメーションをサポートするマテリアル コンポーネントには、次のようなものがあります。

SearchBarModalBottomSheet は、予測型「戻る」ジェスチャーで自動的にアニメーション化されます。ModalNavigationDrawerModalDrawerSheetDismissibleDrawerSheetDismissibleNavigationDrawer では、それぞれのシート コンテンツ コンポーザブルに drawerState を渡す必要があります。

予測型「戻る」ジェスチャーのアニメーションをテストする

Android 13 または Android 14 を引き続き使用している場合は、ホーム画面への戻りアニメーションをテストできます。

このアニメーションをテストする手順は次のとおりです。

  1. デバイスで、[設定] > [システム] > [開発者向けオプション] に移動します。
  2. [予測型「戻る」アニメーション] を選択します。
  3. 更新したアプリを起動し、「戻る」ジェスチャーを使用して実際の動作を確認します。

Android 15 以降では、この機能はデフォルトで有効になっています。

参考情報