Wear OS için Compose ile gezinme

Android Jetpack'teki Gezinme bileşeni, Jetpack Compose uygulamalarına destek sağlar. Navigasyon bileşeninin altyapısından ve özelliklerinden yararlanarak bileşenler arasında gezinebilirsiniz.

Bu sayfada, Wear OS için Compose'da Jetpack Navigasyon 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.4.0"
    implementation "androidx.wear.compose:compose-navigation:$wear_compose_version"
}

Wear OS'e özel alternatif uygulamalar sağladığı için androidx.navigation:navigation-compose yapının yerine kullanılır.

Gezinme denetleyicisi, ana makine ve grafik oluşturma

Wear OS için Compose ile gezinmek için Wear OS dışı uygulamalarda gereken üç bileşen gerekir: gezinme denetleyicisi, ana makine ve grafik.

Wear OS uygulamalarına uygun bir NavController uygulaması olan WearNavigator örneği oluşturmak için rememberSwipeDismissableNavController() kullanın:

Kotlin

val navController = rememberSwipeDismissableNavController()

NavController, Oluştur uygulamalarında gezinmek için kullanılan birincil API'dir. Navigasyon ana makinesinde, Wear OS'te SwipeDismissableNavHost olan bileşenler arasında gezinmeyi kontrol eder.

Kotlin

val navController = rememberSwipeDismissableNavController()
SwipeDismissableNavHost(
    navController = navController,
    startDestination = "message_list"
) {
    // TODO: build navigation graph
}

NavHost bileşeni gibi, navigasyon denetleyicisine, başlangıç hedefinin rotasına ve burada son lambda olarak gösterilen navigasyon grafiğinin oluşturucusuna referans alır.

Başlangıç hedefi, gezinme grafik oluşturucuda, gezinme denetleyicisiyle gezinilebilen diğer tüm hedeflerle birlikte sağlanmalıdır.

Wear OS uygulamanızda zaman, kaydırma/konum göstergesi ve sayfa göstergesi gibi üst düzey bileşenleri desteklemek için SwipeDismissableNavHost öğesini Scaffold içeriği olarak beyan edin. Varsayılan olarak ekrana bir TimeText nesnesi eklemek ve ekranlar arasında gezinirken doğru şekilde animasyonlu olarak görünmesini sağlamak için SwipeDismissableNavHost üzerinde bir Saatçi AppScaffold nesnesi ve ekran düzeyinde bir Saatçi ScreenScaffold nesnesi kullanın. Ayrıca ScreenScaffold, kaydırılabilir içerikler için bir 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")!!)
        }
    }
}
// ...
// .. Screen level content goes here
val scrollState = rememberScrollState()

ScreenScaffold(scrollState = scrollState) {
    // 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ını tamamlayın.