Przewijanie paralaksy to technika, w której treści tła i pierwszego planu przesuwają się z różną prędkością. Możesz zastosować tę technikę, aby ulepszyć interfejs aplikacji i utworzyć bardziej dynamiczne wrażenia podczas przewijania przez użytkowników.
Zgodność wersji
Ta implementacja wymaga, aby minimalna wersja pakietu SDK projektu była ustawiona na poziom API 21 lub wyższy.
Zależności
Tworzenie efektu paralaksy
Aby uzyskać efekt paralaksy, zastosuj ułamek wartości przewijania z komponentu przewijania do komponentu, który wymaga efektu paralaksy. Poniższy fragment kodu wybiera 2 zagnieżdżone elementy wizualne – obraz i blok tekstu – i przewija je w tym samym kierunku z różną szybkością:
@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), ) } }
Najważniejsze informacje o kodzie
- Tworzy niestandardowy modyfikator
layout
, aby dostosować szybkość przewijania składanego. Image
przewija się wolniej niżText
, co powoduje efekt paralaksy, gdy oba komponenty przesuwają się w pionie z różną szybkością.
Wyniki
Kolekcje zawierające ten przewodnik
Ten przewodnik należy do tych kolekcji krótkich przewodników, które obejmują szersze zagadnienia związane z tworzeniem aplikacji na Androida:
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=pl)
Wyświetlanie listy lub siatki
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=pl)
Wyświetl obrazy
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=pl)