导航是指支持用户导航、进入和退出应用中不同内容片段的交互。Android Jetpack 的导航组件可帮助您实现导航,无论是简单的按钮点击,还是应用栏和抽屉式导航栏等更为复杂的模式,该组件均可应对。导航组件还通过遵循一套既定原则来确保一致且可预测的用户体验。
导航组件由以下三个关键部分组成:
- 导航图:在一个集中位置包含所有导航相关信息的 XML 资源。这包括应用内所有单个内容区域(称为目标)以及用户可以通过应用获取的可能路径。
NavHost
:显示导航图中目标的空白容器。导航组件包含一个默认NavHost
实现 (NavHostFragment
),可显示 Fragment 目标。NavController
:在NavHost
中管理应用导航的对象。当用户在整个应用中移动时,NavController
会安排NavHost
中目标内容的交换。
在应用中导航时,您告诉 NavController
,您想沿导航图中的特定路径导航至特定目标,或直接导航至特定目标。NavController
便会在 NavHost
中显示相应目标。
导航组件提供各种其他优势,包括以下内容:
- 处理 Fragment 事务。
- 默认情况下,正确处理往返操作。
- 为动画和转换提供标准化资源。
- 实现和处理深层链接。
- 包括导航界面模式(例如抽屉式导航栏和底部导航),用户只需完成极少的额外工作。
- Safe Args - 可在目标之间导航和传递数据时提供类型安全的 Gradle 插件。
ViewModel
支持 - 您可以将ViewModel
的范围限定为导航图,以在图表的目标之间共享与界面相关的数据。
此外,您还可以使用 Android Studio 的 Navigation Editor 来查看和编辑导航图。
后续步骤
有关导航组件的更多文档和资源,请参阅以下内容。
使用入门
更多主题
- 导航原则
- 针对不同设备类型的设计
- 手势导航
- 设计导航图
- 嵌套图
- 全局操作
- 条件导航
- 在目标之间传递数据
- 为目标创建深层链接
- 为目标之间的过渡添加动画效果
- 使用 NavigationUI 更新界面组件
- 使用标签创建滑动视图
- 以编程方式与导航组件交互
- 测试导航
- 添加新的目标类型
- 提供自定义返回导航
- 迁移到导航组件