Ç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(),
) { ... }
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir
- Odak davranışını değiştirme
- Jetpack Compose ile klavye, fare, dokunmatik yüzey ve ekran kalemi desteği ekleme
- Wear OS için Kodlama Codelab'i