Android Jetpack'teki Navigation bileşeni, Jetpack Compose uygulamaları için destek sağlar. Navigation bileşeninin altyapısından ve özelliklerinden yararlanırken composable'lar arasında gezinebilirsiniz.
Bu sayfada, Wear OS için Compose'daki Jetpack Navigation ile ilgili farklılıklar açıklanmaktadır.
Kurulum
Uygulama modülünüzün build.gradle dosyasında aşağıdaki bağımlılığı kullanın:
Kotlin
dependencies { def wear_compose_version = "1.5.4" implementation "androidx.wear.compose:compose-navigation:$wear_compose_version" }
Wear OS'e özel alternatif uygulamalar sağladığı için androidx.navigation:navigation-compose
yapıtı yerine kullanılır.
Gezinme denetleyicisi, ana makine ve grafik oluşturma
Wear OS için Compose ile gezinme, Wear OS dışındaki uygulamalarda gereken üç bileşeni (gezinme denetleyicisi, ana makine ve grafik) gerektirir.
Wear OS uygulamaları için uygun bir NavController uygulaması olan WearNavigator örneği oluşturmak üzere
rememberSwipeDismissableNavController()
kullanın:
Kotlin
val navController = rememberSwipeDismissableNavController()
NavController, Compose uygulamalarında gezinmek için kullanılan birincil API'dir. Bu işlev, Wear OS'te SwipeDismissableNavHost olan gezinme ana makinesindeki composable'lar arasında gezinmeyi kontrol eder.
Kotlin
val navController = rememberSwipeDismissableNavController() SwipeDismissableNavHost( navController = navController, startDestination = "message_list" ) { // TODO: build navigation graph }
NavHost composable'a benzer şekilde, gezinme denetleyicisine, başlangıç hedefinin rotasına ve burada sondaki lambda olarak gösterilen gezinme grafiği oluşturucusuna referans alır.
Başlangıç hedefi, gezinme grafiği oluşturucuda, gezinme denetleyicisiyle gezinilebilmesi gereken diğer tüm hedeflerle birlikte sağlanmalıdır.
Wear OS uygulamanızda, saat, kaydırma/konum göstergesi ve sayfa göstergesi gibi üst düzey bileşenleri desteklemek içinSwipeDismissableNavHost öğesini
AppScaffold içeriği olarak beyan edin.
Ekran düzeyinde SwipeDismissableNavHost ve ScreenScaffold üzerinde bir AppScaffold nesnesi kullanarak ekrana varsayılan olarak bir TimeText nesnesi ekleyin ve ekranlar arasında gezinirken nesnenin doğru şekilde animasyon oluşturmasını sağlayın.
Ayrıca, ScreenScaffold kaydırılabilir içerik için PositionIndicator ekler.
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 padding = rememberResponsiveColumnPadding( first = ColumnItemType.BodyText ) ScreenScaffold( scrollState = scrollState, contentPadding = padding ) { scaffoldPaddingValues -> // Screen content goes here // ...
Jetpack Navigation hakkında daha fazla bilgi edinmek için Compose ile gezinme başlıklı makaleyi inceleyin veya Jetpack Compose Navigation kod laboratuvarına katılın.
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir.
- Jetpack Navigation'ı Navigation Compose'a taşıma
- Compose ile gezinme
- Oluştur ile ekranlar arasında gezinme