Wear OS için Compose ile gezinme


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.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ı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çin SwipeDismissableNavHost öğ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.