Oluşturma ile çevirmeli giriş

Çevirmeli giriş, saatinizin dönen veya döndürülen parçalarından gelen girişleri ifade eder. Kullanıcılar, kol saatleriyle etkileşimde bulunmak için ortalama olarak yalnızca birkaç saniye harcar. Kullanıcınızın çeşitli görevleri hızlı bir şekilde tamamlamasına olanak tanımak için döner girişi kullanarak kullanıcı deneyiminizi geliştirebilirsiniz.

Çoğu saatte, dönen yan düğme (RSB) ve fiziksel çerçeve veya ekranın etrafında dairesel dokunma bölgesi olan dokunmatik çerçeve olmak üzere üç ana döner giriş kaynağı bulunur. Beklenen davranış, giriş türüne göre değişse de tüm temel etkileşimler için döner girişi desteklediğinizden emin olun.

Kaydır

Kullanıcıların çoğu, uygulamaların kaydırma hareketini desteklemesini bekler. Ekrandaki içerik kaydırıldığında, kullanıcılara dönen etkileşimlere yanıt olarak görsel geri bildirim verin. Görsel geri bildirim, dikey kaydırma için konum göstergeleri veya sayfa göstergeleri içerebilir.

ScalingLazyColumn ve Picker, bu bileşenleri bir Scaffold içine yerleştirmeniz gerektiği sürece varsayılan olarak kaydırma hareketini destekler. Scaffold, Wear OS uygulamaları için temel düzen yapısını sağlar ve kaydırma göstergesi için bir yuva içerir. Kaydırma işleminin ilerlemesini göstermek için aşağıdaki kod snippet'inde gösterildiği gibi, liste durumu nesnesine dayalı bir konum göstergesi oluşturun:

val listState = rememberScalingLazyListState()
Scaffold(
    positionIndicator = {
        PositionIndicator(scalingLazyListState = listState)
    }
) {
    // ...
}

Aşağıdaki kod snippet'inde gösterildiği gibi ScalingLazyColumnDefaults.snapFlingBehavior kullanarak ScalingLazyColumn için bir sabitleme davranışı yapılandırabilirsiniz:

val listState = rememberScalingLazyListState()
Scaffold(
    positionIndicator = {
        PositionIndicator(scalingLazyListState = listState)
    }
) {

    val state = rememberScalingLazyListState()
    ScalingLazyColumn(
        modifier = Modifier.fillMaxWidth(),
        state = state,
        flingBehavior = ScalingLazyColumnDefaults.snapFlingBehavior(state = state)
    ) {
        // Content goes here
        // ...
    }
}

Özel işlemler

Ayrıca, uygulamanızdaki çevirmeli girişlere yanıt veren özel işlemler de oluşturabilirsiniz. Örneğin, yakınlaştırmak ve uzaklaştırmak ya da bir medya uygulamasındaki ses düzeyini kontrol etmek için çevirmeli girişi kullanın.

Bileşeniniz ses seviyesi kontrolü gibi kaydırma etkinliklerini doğal olarak desteklemiyorsa kaydırma etkinliklerini kendiniz yönetebilirsiniz.

// VolumeScreen.kt

val focusRequester: FocusRequester = remember { FocusRequester() }

Column(
    modifier = Modifier
        .fillMaxSize()
        .onRotaryScrollEvent {
            // handle rotary scroll events
            true
        }
        .focusRequester(focusRequester)
        .focusable(),
) { ... }

Görünüm modelinde yönetilen özel bir durum ve dönen kaydırma etkinliklerini işlemek için kullanılan özel bir geri çağırma işlevi oluşturun.

// VolumeViewModel.kt

object VolumeRange(
    public val max: Int = 10
    public val min: Int = 0
)

val volumeState: MutableStateFlow<Int> = ...

fun onVolumeChangeByScroll(pixels: Float) {
    volumeState.value = when {
        pixels > 0 -> min (volumeState.value + 1, VolumeRange.max)
        pixels < 0 -> max (volumeState.value - 1, VolumeRange.min)
    }
}

Basitlik açısından, önceki örnekte gerçekte kullanıldıklarında aşırı hassas olabilecek piksel değerleri kullanılmıştır.

Etkinlikleri aldıktan sonra aşağıdaki snippet'te gösterildiği gibi geri çağırma işlevini kullanın.

val focusRequester: FocusRequester = remember { FocusRequester() }
val volumeState by volumeViewModel.volumeState.collectAsState()

Column(
    modifier = Modifier
        .fillMaxSize()
        .onRotaryScrollEvent {
            volumeViewModel
                .onVolumeChangeByScroll(it.verticalScrollPixels)
            true
        }
        .focusRequester(focusRequester)
        .focusable(),
) { ... }