Navigation 3

Navigation 3 是一个新的导航库,专为与 Compose 搭配使用而设计。借助 Navigation 3,您可以完全控制返回堆栈,并且从一个目的地导航到另一个目的地或从一个目的地导航到另一个目的地就像在列表中添加和移除项一样简单。它通过提供以下功能来创建灵活的应用导航系统:

  • 用于对返回堆栈进行建模的惯例,其中返回堆栈上的每个条目都代表用户已导航到的具体内容
  • 会随返回堆栈更改(包括动画)而自动更新的界面
  • 返回堆栈中项的范围,允许在项位于返回堆栈中时保留状态
  • 自适应布局系统,可同时显示多个目的地,并允许在这些布局之间无缝切换
  • 一种机制,用于让内容与其父布局(元数据)进行通信

概括来讲,您可以通过以下方式实现 Navigation 3:

  1. 定义用户可以在应用中导航到的各项内容(每项内容都有一个唯一键),并添加一个用于将该键解析为内容的函数。请参阅将键解析为内容
  2. 创建一个返回堆栈,以便在用户浏览应用时将按键推送到该堆栈并从中移除。请参阅创建返回堆栈
  3. 使用 NavDisplay 显示应用的返回堆栈。每当返回堆栈发生变化时,它都会更新界面以显示相关内容。请参阅显示返回堆栈
  4. 根据需要修改 NavDisplay场景策略,以支持自适应布局和不同的平台。

您可以在 AOSP 上查看 Navigation 3 的完整源代码

Jetpack Navigation 的改进

Navigation 3 在以下方面对原始 Jetpack Navigation API 进行了改进:

  • 提供更简单的 Compose 集成
  • 让您完全控制返回堆栈
  • 可创建可同时从返回堆栈读取多个目的地的布局,使其能够适应窗口大小和其他输入的变化。

如需详细了解 Navigation 3 的原则和 API 设计选项,请参阅这篇博文

代码示例

Recipes 仓库包含有关如何使用 Navigation 3 构建块解决常见导航问题的示例。