Listy umożliwiają użytkownikom wybór elementu z zestawu opcji na urządzeniach z Wear OS.
Wiele urządzeń z Wear OS ma okrągłe ekrany, co utrudnia wyświetlanie elementów listy u góry i dołu ekranu. Dlatego Compose dla Wear OS zawiera wersję klasy LazyColumn
o nazwie TransformingLazyColumn
, która obsługuje animacje skalowania i przekształcania.
Gdy elementy przesuwają się na krawędzie, stają się mniejsze i znikają.
Aby dodać efekt skalowania i przewijania, użyj opcji Modifier.transformedHeight
, aby umożliwić Compose obliczenie zmiany wysokości podczas przewijania elementu na ekranie, oraz opcji transformation = SurfaceTransformation(transformationSpec)
, aby zastosować efekty wizualne, w tym zmniejszyć rozmiar elementu, tak aby pasował do poprzedniego.
Animacja poniżej pokazuje, jak zmienia się rozmiar i przezroczystość elementu podczas jego przemieszczania po ekranie:
Poniższy fragment kodu pokazuje, jak utworzyć listę za pomocą układuTransformingLazyColumn
, aby stworzyć treści, które świetnie wyglądają na różnych rozmiarach ekranów Wear OS. Na przykład w tym przykładowym kodzie doda on odpowiednie wypełnienie do pierwszego i ostatniego elementu listy, które są ustawione w contentPadding
elementu TransformingLazyColumn
. Aby wyświetlić wskaźnik przewijania, podziel columnState
między ScreenScaffold
a TransformingLazyColumn
:
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, ) } } } }
Dodawanie efektu przyciągania i wyrzucania
Jeśli chcesz dodać zachowanie snap-and-fling, zalecamy użycieScalingLazyColumn
. Dzięki temu użytkownicy mogą precyzyjniej poruszać się po elementach na liście, a także szybciej przewijać długą listę.
Aby dodać ten efekt do wersji ScalingLazyColumn
w Horologist, ustaw parametr rotaryMode
w funkcji columnState
na RotaryWithSnap
, jak pokazano w tym fragmencie kodu:
val columnState = rememberResponsiveColumnState( // ... // ... rotaryMode = ScalingLazyColumnState.RotaryMode.Snap ) ScreenScaffold(scrollState = columnState) { ScalingLazyColumn( columnState = columnState ) { // ... // ... } }
Polecane dla Ciebie
- Uwaga: tekst linku jest wyświetlany, gdy obsługa JavaScript jest wyłączona
- Tworzenie aplikacji na Wear OS – Codelab
- Listy i siatki
- Korzystanie z widoków w sekcji Tworzenie wiadomości