A rolagem de paralaxe é uma técnica em que o conteúdo de primeiro e segundo plano rolam em velocidades diferentes. É possível implementar essa técnica para aprimorar a interface do app, criando uma experiência mais dinâmica à medida que os usuários rolam a tela.
Compatibilidade de versões
Essa implementação exige que o minSDK do projeto seja definido como nível 21 da API ou mais recente.
Dependências
Criar um efeito de paralaxe
Para conseguir o efeito de paralaxe, aplique uma fração do valor de rolagem do elemento combinável de rolagem ao elemento combinável que precisa do efeito de paralaxe. O snippet a seguir usa dois elementos visuais aninhados (uma imagem e um bloco de texto) e os rola na mesma direção em velocidades diferentes:
@Composable fun ParallaxEffect() { fun Modifier.parallaxLayoutModifier(scrollState: ScrollState, rate: Int) = layout { measurable, constraints -> val placeable = measurable.measure(constraints) val height = if (rate > 0) scrollState.value / rate else scrollState.value layout(placeable.width, placeable.height) { placeable.place(0, height) } } val scrollState = rememberScrollState() Column( modifier = Modifier .fillMaxWidth() .verticalScroll(scrollState), ) { Image( painterResource(id = R.drawable.cupcake), contentDescription = "Android logo", contentScale = ContentScale.Fit, // Reduce scrolling rate by half. modifier = Modifier.parallaxLayoutModifier(scrollState, 2) ) Text( text = stringResource(R.string.detail_placeholder), modifier = Modifier .background(Color.White) .padding(horizontal = 8.dp), ) } }
Pontos principais sobre o código
- Cria um modificador
layout
personalizado para ajustar a taxa de rolagem do elemento combinável. - O
Image
rola com uma taxa mais lenta do que oText
, produzindo um efeito de paralaxe à medida que os dois elementos combináveis são traduzidos verticalmente em taxas diferentes.
Resultados
Coleções que contêm este guia
Este guia faz parte destas coleções selecionadas de guias rápidos que abrangem metas mais amplas de desenvolvimento para Android:
![](https://developer.android.com/static/images/quick-guides/collection-illustration.png?hl=pt-br)
Mostrar uma lista ou grade
![](https://developer.android.com/static/images/quick-guides/collection-illustration.png?hl=pt-br)
Exibir imagens
![](https://developer.android.com/static/images/quick-guides/collection-illustration.png?hl=pt-br)