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

予測型「戻る」とシステム アニメーションはデフォルトで有効になっています。アプリが「戻る」イベントをインターセプトしていて、予測型「戻る」に移行していない場合は、サポートされている「戻る」ナビゲーション API を使用するようにアプリを更新します

ホームに戻る予測型「戻る」アニメーション。
予測型クロス アクティビティ アニメーション。
予測型クロス タスク アニメーション。

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

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

  • Back-to-home: ユーザーをホーム画面に戻します。
  • アクティビティ間: アプリ内のアクティビティ間の遷移。
  • クロスタスク: タスク間の移行。

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

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

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

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

Navigation 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 以降では、この機能はデフォルトで有効になっています。

参考情報