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 visualizzati nella parte superiore e inferiore dello schermo. Per questo motivo,
Compose per Wear OS include una versione della classe LazyColumn
chiamata
TransformingLazyColumn
, che supporta le animazioni di ridimensionamento e morphing.
Quando gli elementi si spostano verso i bordi, diventano più piccoli e si attenuano.
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 dell'elemento in modo che corrisponda a quello precedente.
L'animazione seguente mostra come le dimensioni e la trasparenza di un elemento cambiano mentre si sposta sullo schermo:
Il seguente snippet di codice mostra come creare un elenco utilizzando il layoutTransformingLazyColumn
per creare contenuti che appaiano perfettamente su una serie di dimensioni dello schermo Wear OS. Ad esempio, nel seguente codice di esempio, verrà aggiunto il padding necessario al primo e all'ultimo elemento dell'elenco impostati nel contentPadding
del TransformingLazyColumn
. Affinché l'indicatore di scorrimento venga visualizzato, 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 scatto e lancio
Se devi aggiungere un comportamento di aggancio e lancio, ti consigliamo di utilizzareScalingLazyColumn
. Questo effetto aiuta gli utenti a navigare con maggiore precisione 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
- Codelab Compose per Wear OS
- Elenchi e griglie
- Utilizzare le visualizzazioni in Scrittura