Listas permitem que os usuários selecionem um item de um conjunto de opções em dispositivos Wear OS.
Muitos dispositivos Wear OS usam telas redondas, o que dificulta a visualização
de itens de lista que aparecem perto das partes de cima e de baixo da tela. Por esse motivo,
o Compose para Wear OS inclui uma versão da classe LazyColumn
chamada
TransformingLazyColumn
, que oferece suporte a animações de dimensionamento e transformação.
Quando os itens se movem para as bordas, eles ficam menores e desaparecem.
Para adicionar um efeito de redimensionamento e rolagem, use Modifier.transformedHeight
para permitir que o Compose calcule a mudança de altura à medida que o item rola pela
tela e transformation = SurfaceTransformation(transformationSpec)
para aplicar
os efeitos visuais, incluindo o redimensionamento visual do item para corresponder ao anterior.
A animação abaixo mostra como o tamanho e a transparência de um elemento mudam conforme ele se move pela tela:
O snippet de código abaixo mostra como criar uma lista usando o layoutTransformingLazyColumn
para criar conteúdo que
fica ótimo em vários tamanhos de tela do Wear OS. Por exemplo, no
código de exemplo abaixo, ele vai adicionar o padding necessário ao primeiro e ao último
elementos da lista, que são definidos no contentPadding
do
TransformingLazyColumn
. Para que o indicador de rolagem seja
exibido, compartilhe o columnState
entre o ScreenScaffold
e o
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, ) } } } }
Adicionar um efeito de ajuste e deslize rápido
Se você precisar adicionar um comportamento de ajuste e deslizamento, sugerimos o uso deScalingLazyColumn
. Esse efeito ajuda os usuários a navegar com mais precisão
pelos itens de uma lista e, ao mesmo tempo, os ajuda a percorrer uma
lista longa com mais rapidez.
Para adicionar esse efeito à versão do Horologist do ScalingLazyColumn
,
defina o parâmetro rotaryMode
de columnState
como
RotaryWithSnap
, conforme mostrado no snippet de código abaixo:
val columnState = rememberResponsiveColumnState( // ... // ... rotaryMode = ScalingLazyColumnState.RotaryMode.Snap ) ScreenScaffold(scrollState = columnState) { ScalingLazyColumn( columnState = columnState ) { // ... // ... } }
Recomendados para você
- Observação: o texto do link aparece quando o JavaScript está desativado.
- Codelab sobre o Compose para Wear OS
- Listas e grades
- Como usar visualizações no Compose