Oluşturma ile çevirmeli giriş

Döner giriş, saatinizin dönen veya dönen parçalarından gelen girişleri ifade eder. Şu tarihte: ortalama olarak, kullanıcılar kol saatiyle yalnızca birkaç saniyeliğine etkileşim kuruyor. Siz kullanıcınızın şunları yapmasına olanak sağlamak için Döner girişi kullanarak kullanıcı deneyiminizi geliştirebilir: çeşitli görevleri hızla yerine getirmeniz gerekir.

Çoğu kol saatinde çevirmeli girişin üç ana kaynağı, dönen taraftır. bir fiziksel çerçeve veya yuvarlak bir çerçeve olan dokunmatik çerçeve dokunun. Beklenen davranış konuma göre değişiklik gösterebilir tüm önemli etkileşimler için çevirmeli girişi desteklediğinden emin olun.

Kaydır

Çoğu kullanıcı, uygulamaların kaydırma hareketini desteklemesini bekler. İçerik ilerledikçe gibi yöntemlerle, kullanıcılara dönüşümlü etkileşimlere yanıt olarak görsel geri bildirim verebilir. Görsel geri bildirim, dikey kaydırma için konum göstergeleri veya sayfa göstergeleri hakkında daha fazla bilgi edinin.

ScalingLazyColumn ve Picker varsayılan olarak kaydırma hareketini destekliyor ancak bu bileşenleri bir Scaffold içine yerleştirmeniz gerektiği sürece. Scaffold temel düzen yapısını sağlar ve kaydırma göstergesi için de bir yeri var. Alıcı: gösteren bir konum göstergesi oluşturun. aşağıdaki kod snippet'inde gösterildiği gibi liste durumu nesnesini tanımlayın:

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

ScalingLazyColumn için tutturma davranışını yapılandırmak için şunları kullanabilirsiniz: ScalingLazyColumnDefaults.snapFlingBehavior, aşağıda gösterildiği gibi kod snippet'i:

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, örneğin, yakınlaştırma ve uzaklaştırma yapmak ya da bir medyadaki ses düzeyini kontrol etmek için çevirmeli girişleri kullanın. uygulamasını indirin.

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 bir özel durum ve kullanılan özel bir geri çağırma oluşturun çevirmeyi deneyin.

// 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 büyük olasılıkla aşırı hassas olacak.

Aşağıdaki snippet'te gösterildiği gibi, etkinlikleri aldıktan sonra geri çağırmayı 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(),
) { ... }