Przewijanie z paralaksą to technika, w której treści w tle i na pierwszym planie przewijają się z różną prędkością. Możesz wdrożyć tę technikę, aby ulepszyć interfejs aplikacji i zapewnić użytkownikom bardziej dynamiczne wrażenia podczas przewijania.
Wyniki
Zgodność wersji
Ta implementacja wymaga, aby minSDK projektu było ustawione na poziom API 21 lub wyższy.
Zależności
Tworzenie efektu paralaksy
Aby uzyskać efekt paralaksy, zastosuj ułamek wartości przewijania z elementu kompozycyjnego przewijania do elementu kompozycyjnego, który ma mieć efekt paralaksy. Poniższy fragment kodu pobiera 2 zagnieżdżone elementy wizualne – obraz i blok tekstu – i przewija je w tym samym kierunku z różną prędkoś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 elementu kompozycyjnego. - Element
Imageprzewija się wolniej niż elementText, co daje efekt paralaksy, gdy 2 elementy kompozycyjne przesuwają się pionowo z różną prędkością.
Zbiory zawierające ten przewodnik
Ten przewodnik jest częścią tych wybranych zbiorów krótkich przewodników, które obejmują szersze cele związane z tworzeniem aplikacji na Androida:
Wyświetlanie listy lub siatki
Wyświetlanie obrazów