A rolagem paralaxe é uma técnica em que o conteúdo em segundo plano e em primeiro plano rolam em velocidades diferentes. Você pode implementar essa técnica para melhorar a interface do usuário do app, criando uma experiência mais dinâmica à medida que os usuários rolam a tela.
Resultados
Compatibilidade de versões
Essa implementação exige que o minSDK do projeto seja definido como nível da API 21 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
layoutpersonalizado para ajustar a taxa de rolagem do combinável. - O
Imagerola em uma taxa mais lenta do que oText, produzindo um efeito de paralaxe à medida que os dois elementos combináveis são transladados verticalmente em taxas diferentes.
Coleções que contêm este guia
Este guia faz parte das coleções de guias rápidos selecionados que abrangem objetivos mais amplos de desenvolvimento para Android:
Mostrar uma lista ou grade
Exibir imagens