Las listas les permiten a los usuarios seleccionar un elemento de un conjunto de opciones en dispositivos Wear OS.
Muchos dispositivos Wear OS usan pantallas redondas, lo que dificulta la visualización de los elementos de la lista que aparecen cerca de la parte inferior y superior de la pantalla. Por este motivo,
Compose para Wear OS incluye una versión de la clase LazyColumn llamada
TransformingLazyColumn, que admite animaciones de escalamiento y transformación.
Cuando los elementos se mueven hacia los bordes, se hacen más pequeños y se desvanecen.
Para aplicar los efectos de escalamiento y desplazamiento recomendados, haz lo siguiente:
- Usa
Modifier.transformedHeightpara permitir que Compose calcule el cambio de altura a medida que el elemento se desplaza por la pantalla. - Usa
transformation = SurfaceTransformation(transformationSpec)para aplicar los efectos visuales, incluido el escalamiento del contenido del elemento. - Usa un
TransformationSpecpersonalizado para los componentes que no tomantransformationcomo parámetro, comoText.
En la siguiente animación, se muestra cómo un elemento de lista se escala y cambia de forma cuando se acerca a la parte superior e inferior de la pantalla:
En el siguiente fragmento de código, se muestra cómo crear una lista con elTransformingLazyColumn diseño para crear contenido que
se vea bien en una variedad de tamaños de pantalla de Wear OS.
El fragmento también muestra el uso del modificador minimumVerticalContentPadding, que debes configurar en los elementos de la lista para aplicar el padding correcto en la parte superior e inferior de la lista.
Para mostrar el indicador de desplazamiento, comparte el columnState entre el ScreenScaffold y el TransformingLazyColumn:
val columnState = rememberTransformingLazyColumnState() val transformationSpec = rememberTransformationSpec() ScreenScaffold( scrollState = columnState ) { contentPadding -> TransformingLazyColumn( state = columnState, contentPadding = contentPadding ) { item { ListHeader( modifier = Modifier .fillMaxWidth() .transformedHeight(this, transformationSpec) .minimumVerticalContentPadding(ListHeaderDefaults.minimumTopListContentPadding), transformation = SurfaceTransformation(transformationSpec) ) { Text(text = "Header") } } // ... other items item { Button( modifier = Modifier .fillMaxWidth() .transformedHeight(this, transformationSpec) .minimumVerticalContentPadding(ButtonDefaults.minimumVerticalListContentPadding), transformation = SurfaceTransformation(transformationSpec), onClick = { /* ... */ }, icon = { Icon( imageVector = Icons.Default.Build, contentDescription = "build", ) }, ) { Text( text = "Build", maxLines = 1, overflow = TextOverflow.Ellipsis, ) } } } }
Cómo agregar un efecto de ajustar y deslizar.
Si necesitas agregar un comportamiento de ajustar y deslizar, configura el parámetroflingBehavior en TransformingLazyColumnDefaults.snapFlingBehavior(columnState), como se muestra en el siguiente fragmento de código:
val columnState = rememberTransformingLazyColumnState() ScreenScaffold(scrollState = columnState) { TransformingLazyColumn( state = columnState, flingBehavior = TransformingLazyColumnDefaults.snapFlingBehavior(columnState) ) { // ... // ... } }
Recomendaciones para ti
- Nota: El texto del vínculo se muestra cuando JavaScript está desactivado
- Codelab de Compose para Wear OS
- Listas y cuadrículas
- Cómo usar objetos View en Compose