Gli elenchi consentono agli utenti di selezionare un elemento da un insieme di opzioni sui dispositivi Wear OS.
Molti dispositivi Wear OS utilizzano schermi rotondi, il che rende più difficile vedere
gli elementi dell'elenco che vengono visualizzati nella parte superiore e inferiore dello schermo. Per questo motivo,
Compose for Wear OS include una versione della classe LazyColumn
chiamata
TransformingLazyColumn
, che supporta le animazioni di scalabilità e morphing.
Quando gli elementi si spostano verso i bordi, diventano più piccoli e sbiadiscono.
Per aggiungere un effetto di ridimensionamento e scorrimento, utilizza Modifier.transformedHeight
per consentire a Compose di calcolare la variazione di altezza man mano che l'elemento scorre sullo
schermo e transformation = SurfaceTransformation(transformationSpec)
per applicare
gli effetti visivi, incluso il ridimensionamento visivo dell'elemento in modo che corrisponda a quello
precedente.
Utilizza un TransformationSpec
personalizzato per i componenti che non accettano
transformation
come parametro, ad esempio Text
.
L'animazione seguente mostra come cambiano le dimensioni e la trasparenza di un elemento mentre si sposta sullo schermo:
Il seguente snippet di codice mostra come creare un elenco utilizzando il layoutTransformingLazyColumn
per creare contenuti che
hanno un aspetto ottimale su una vasta gamma di dimensioni dello schermo di Wear OS. Ad esempio, nel
seguente codice di esempio, verrà aggiunto il padding necessario al primo e all'ultimo
elemento dell'elenco impostati in contentPadding
di
TransformingLazyColumn
. Affinché l'indicatore di scorrimento venga
mostrato, condividi columnState
tra ScreenScaffold
e
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, ) } } } }
Aggiungere un effetto di scatto e lancio
Se devi aggiungere un comportamento di scorrimento rapido, ti consigliamo di utilizzareScalingLazyColumn
. Questo effetto aiuta gli utenti a navigare in modo più preciso tra gli elementi di un elenco e a spostarsi più rapidamente in un elenco lungo.
Per aggiungere questo effetto alla versione di ScalingLazyColumn
di Horologist,
imposta il parametro rotaryMode
di columnState
su
RotaryWithSnap
, come mostrato nello snippet di codice seguente:
val columnState = rememberResponsiveColumnState( // ... // ... rotaryMode = ScalingLazyColumnState.RotaryMode.Snap ) ScreenScaffold(scrollState = columnState) { ScalingLazyColumn( columnState = columnState ) { // ... // ... } }
Consigliati per te
- Nota: il testo del link viene visualizzato quando JavaScript è disattivato
- Compose for Wear OS Codelab
- Elenchi e griglie
- Utilizzare le visualizzazioni in Scrivi