Listeler, kullanıcıların Wear OS cihazlarda bir dizi seçenek arasından öğe seçmesine olanak tanır.
Birçok Wear OS cihazda yuvarlak ekranlar kullanılır. Bu da ekranın üst ve alt kısmında görünen liste öğelerinin görülmesini zorlaştırır. Bu nedenle, Wear OS için Compose, ölçeklendirme ve dönüşüm animasyonlarını destekleyen TransformingLazyColumn
adlı bir LazyColumn
sınıfı sürümü içerir.
Öğeler kenara taşındığında küçülür ve kaybolur.
Ölçeklendirme ve kaydırma efekti eklemek için Modifier.transformedHeight
simgesini kullanarak öğe ekranda kaydırıldığında yükseklik değişikliğinin Oluştur tarafından hesaplanmasına izin verin. transformation = SurfaceTransformation(transformationSpec)
simgesini kullanarak da görsel efektleri uygulayın. Örneğin, öğeyi öncekiyle eşleşecek şekilde görsel olarak küçültebilirsiniz.
Aşağıdaki animasyonda, bir öğenin ekranda hareket ederken boyutu ve saydamlığının nasıl değiştiği gösterilmektedir:
Aşağıdaki kod snippet'inde, çeşitli Wear OS ekran boyutlarında harika görünen içerikler oluşturmak içinTransformingLazyColumn
düzenini kullanarak nasıl liste oluşturulacağı gösterilmektedir. Örneğin, aşağıdaki örnek kodda, TransformingLazyColumn
öğesinin contentPadding
alanında ayarlanan listenin ilk ve son öğelerine gerekli dolgu eklenir. Kaydırma göstergesinin gösterilmesi için columnState
öğesini ScreenScaffold
ile TransformingLazyColumn
arasında paylaşın:
val columnState = rememberTransformingLazyColumnState() val contentPadding = rememberResponsiveColumnPadding( first = ColumnItemType.ListHeader, last = ColumnItemType.Button, ) val transformationSpec = rememberTransformationSpec() ScreenScaffold( scrollState = columnState, contentPadding = contentPadding ) { contentPadding -> TransformingLazyColumn( state = columnState, contentPadding = contentPadding ) { item { ListHeader( modifier = Modifier.fillMaxWidth().transformedHeight(this, transformationSpec), transformation = SurfaceTransformation(transformationSpec) ) { Text(text = "Header") } } // ... other items item { Button( modifier = Modifier.fillMaxWidth().transformedHeight(this, transformationSpec), transformation = SurfaceTransformation(transformationSpec), onClick = { /* ... */ }, icon = { Icon( imageVector = Icons.Default.Build, contentDescription = "build", ) }, ) { Text( text = "Build", maxLines = 1, overflow = TextOverflow.Ellipsis, ) } } } }
Bir fotoğrafı yakalayıp fırlatma efekti ekleme
Bir "dokun ve fırlat" davranışı eklemeniz gerekiyorsaScalingLazyColumn
öğesini kullanmanızı öneririz. Bu efekt, kullanıcıların bir listedeki öğeler arasında daha hassas bir şekilde gezinmesine ve uzun bir listede daha hızlı hareket etmesine yardımcı olur.
Bu efekti, ScalingLazyColumn
öğesinin Horologist sürümüne eklemek için columnState
öğesinin rotaryMode
parametresini aşağıdaki kod snippet'inde gösterildiği gibi RotaryWithSnap
olarak ayarlayın:
val columnState = rememberResponsiveColumnState( // ... // ... rotaryMode = ScalingLazyColumnState.RotaryMode.Snap ) ScreenScaffold(scrollState = columnState) { ScalingLazyColumn( columnState = columnState ) { // ... // ... } }
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir
- Wear OS için Kodlama Codelab'i
- Listeler ve Izgaralar
- Oluşturma bölümünde görünümleri kullanma