设置预测性返回

如需启用预测性返回动画,您必须选择启用对预测性返回手势的支持。如需启用新样式,请将 android:enableOnBackInvokedCallback="true 添加到 AndroidManifest.xml 文件中的 <application> 标记或各个 <activity> 标记。

启用默认系统动画

在 Android 15 及更高版本的设备上,已迁移到受支持的返回处理 API 的应用可以使用“返回主屏幕”“跨 activity”和“跨任务”系统动画。

  • 返回主屏幕:将用户返回主屏幕。
  • 跨 activity:应用内 activity 之间的转换。
  • 跨任务任务之间的转换。

在 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 后,您可以定义进入和退出屏幕的动画效果。您可以使用它们来创建各种效果,例如缩放、淡出或滑动。

在此示例中,scaleOutpopExitTransition 中用于在用户返回时缩小退出屏幕。此外,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 搭配使用,请参阅使用共享元素的预测性返回

使用 Material Compose 组件支持预测性返回

Material Compose 库中的许多组件都旨在与预测性返回手势无缝配合使用。如需在这些组件中启用预测性返回动画,请在项目中添加最新的 Material3 依赖项(androidx.compose.material3:material3-*:1.3.0 或更高版本)。

支持预测性返回动画的 Material 组件包括:

SearchBarModalBottomSheet 会自动使用预测性返回手势添加动画效果。ModalNavigationDrawerModalDrawerSheetDismissibleDrawerSheetDismissibleNavigationDrawer 要求您将 drawerState 传递给各自的工作表内容可组合项。

测试预测性返回手势动画

如果您仍使用 Android 13 或 Android 14,则可以测试返回主屏幕动画。

如需测试此动画,请按以下步骤操作:

  1. 在您的设备上,依次转到设置 > 系统 > 开发者选项
  2. 选择预测性返回手势动画
  3. 启动更新后的应用,然后执行返回手势,看看实际运行效果。

在 Android 15 及更高版本中,此功能默认处于启用状态。

其他资源