Компонент Navigation в Android Jetpack поддерживает приложения Jetpack Compose. Вы можете переходить между элементами composable, используя инфраструктуру и функции компонента Navigation.
На этой странице описаны различия между Jetpack Navigation и Compose для Wear OS.
Настроить
Добавьте в файл build.gradle модуля приложения следующую зависимость:
Kotlin
dependencies { def wear_compose_version = "1.7.1" implementation "androidx.wear.compose:compose-navigation:$wear_compose_version" }
Он используется вместо артефакта androidx.navigation:navigation-compose, поскольку предоставляет альтернативные реализации, предназначенные для Wear OS.
Как создать контроллер навигации, хост и граф
Для навигации с помощью Compose for Wear OS требуются те же три компонента, что и в приложениях для других платформ: контроллер навигации, хост и граф.
Чтобы создать экземпляр WearNavigator, реализации NavController, подходящей для приложений Wear OS, используйте rememberSwipeDismissableNavController():
val navController = rememberSwipeDismissableNavController()
NavController – основной API, используемый для навигации в приложениях Compose. Он управляет переходом между элементами composable в хосте навигации, который в Wear OS представлен компонентом SwipeDismissableNavHost.
val navController = rememberSwipeDismissableNavController() SwipeDismissableNavHost( navController = navController, startDestination = "message_list" ) { // TODO: build navigation graph }
Как и компонуемый элемент NavHost, он принимает ссылку на контроллер навигации, маршрут для начального пункта назначения и построитель для графа навигации, который здесь показан как конечная лямбда-функция.
Начальный пункт назначения должен быть указан в конструкторе графа навигации вместе со всеми остальными пунктами, доступными для навигации с помощью контроллера навигации.
В приложении для Wear OS укажитеSwipeDismissableNavHost в качестве контента элемента AppScaffold, чтобы поддерживать компоненты верхнего уровня, такие как индикатор времени, прокрутки или положения, а также индикатор страницы.
Используйте объект AppScaffold над объектами SwipeDismissableNavHost и 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")!!) } } } } // Implementation of one of the screens in the navigation @Composable fun MessageDetail(id: String) { // .. Screen level content goes here val scrollState = rememberTransformingLazyColumnState() val transformationSpec = rememberTransformationSpec() ScreenScaffold( scrollState = scrollState, ) { contentPadding -> // Screen content goes here // ...
Чтобы узнать больше о навигации в Jetpack, ознакомьтесь с разделом Навигация с помощью Compose или пройдите лабораторную работу по навигации в Jetpack Compose.
Рекомендуем
- Примечание. Текст ссылки показывается, когда JavaScript отключен.
- Как перейти с Jetpack Navigation на Navigation Compose
- Навигация с помощью Compose
- Как переключаться между экранами с помощью Compose