Çevirmeli giriş, saatinizin dönen veya döndürülen parçalarından gelen girişi 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 kol saatinde dönen girişin üç ana kaynağı, dönen yan düğme (RSB) ve fiziksel bir kadran veya ekranın etrafındaki dairesel bir dokunma bölgesi olan dokunmatik kadranlardır. 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 yuvaya sahiptir. Kaydırma ilerleme durumunu 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
Uygulamanızda, çevirmeli girişe yanıt veren özel işlemler de oluşturabilirsiniz. Örneğin, bir medya uygulamasında yakınlaştırmak veya uzaklaştırmak ya da sesi kontrol etmek için çevirmeli girişi kullanabilirsiniz.
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