Android Jetpack 中的导航组件为 Jetpack Compose 应用提供支持。您可以利用导航组件的基础结构和功能在可组合项之间导航。
此页面描述了 Wear OS 上的 Compose 导航与 Jetpack 导航的区别。
设置
在应用模块的 build.gradle 文件中使用以下依赖项
Kotlin
dependencies { def wear_compose_version = "1.4.0" implementation "androidx.wear.compose:compose-navigation:$wear_compose_version" }
它替代了androidx.navigation:navigation-compose
工件,因为它提供了特定于 Wear OS 的替代实现。
创建导航控制器、宿主和图
使用 Compose 导航 Wear OS 需要与非 Wear OS 应用相同的三个组件:导航控制器、宿主和图。
使用 rememberSwipeDismissableNavController()
创建 WearNavigator
的实例,这是一个适用于 Wear OS 应用程序的 NavController
实现。
Kotlin
val navController = rememberSwipeDismissableNavController()
NavController
是 Compose 应用程序中用于导航的主要 API。它控制导航宿主中可组合项之间的导航,在 Wear OS 上,导航宿主是 SwipeDismissableNavHost
。
Kotlin
val navController = rememberSwipeDismissableNavController() SwipeDismissableNavHost( navController = navController, startDestination = "message_list" ) { // TODO: build navigation graph }
与 NavHost
可组合项 一样,它接收导航控制器的引用、起始目的地的路由以及导航图的构建器(此处显示为尾随 lambda)。
起始目的地必须在导航图构建器中提供,以及所有其他应该使用导航控制器可导航的目的地。
在您的 Wear OS 应用程序中,将 SwipeDismissableNavHost
声明为 Scaffold
的内容,以支持顶级组件,如时间、滚动/位置指示器和页面指示器。在 SwipeDismissableNavHost
上方使用 Horologist AppScaffold
对象,并在屏幕级别使用 Horologist ScreenScaffold
,以默认情况下将 TimeText
对象添加到屏幕,并确保在屏幕之间导航时其动画正确。此外,ScreenScaffold
为可滚动内容添加了 PositionIndicator
。
AppScaffold { val navController = rememberSwipeDismissableNavController() SwipeDismissableNavHost( navController = navController, startDestination = "message_list" ) { composable("message_list") { MessageList(onMessageClick = { id -> navController.navigate("message_detail/$id") }) } composable("message_detail/{id}") { MessageDetail(id = it.arguments?.getString("id")!!) } } } // ... // .. Screen level content goes here val scrollState = rememberScrollState() ScreenScaffold(scrollState = scrollState) { // Screen content goes here
要了解有关 Jetpack Navigation 的更多信息,请参阅 使用 Compose 进行导航 或参加 Jetpack Compose Navigation 代码实验室。
为您推荐
- 注意:当 JavaScript 关闭时显示链接文本
- 将 Jetpack Navigation 迁移到 Navigation Compose
- 使用 Compose 进行导航
- 使用 Compose 在屏幕之间导航