Beim Parallax-Scrolling werden die Hintergrund- und Vordergrundinhalte mit unterschiedlichen Geschwindigkeiten gescrollt. Sie können diese Technik implementieren, um die Benutzeroberfläche Ihrer App zu verbessern und beim Scrollen ein dynamischeres Erlebnis zu schaffen.
Versionskompatibilität
Für diese Implementierung muss das minSDK Ihres Projekts auf API-Level 21 oder höher festgelegt sein.
Abhängigkeiten
Parallaxeneffekt erstellen
Um den Parallaxeeffekt zu erzielen, wenden Sie einen Bruchteil des Scrollwerts aus dem Scroll-Komposit auf das Komposit an, für das der Parallaxeeffekt benötigt wird. Im folgenden Snippet werden zwei verschachtelte visuelle Elemente – ein Bild und ein Textblock – in dieselbe Richtung mit unterschiedlichen Geschwindigkeiten gescrollt:
@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), ) } }
Wichtige Punkte zum Code
- Erstellt einen benutzerdefinierten
layout
-Modifikator, um die Geschwindigkeit anzupassen, mit der der zusammensetzbare Inhalt scrollt. - Das
Image
scrollt langsamer als dasText
, was einen Parallaxeneffekt erzeugt, da sich die beiden Composables vertikal mit unterschiedlichen Geschwindigkeiten verschieben.
Ergebnisse
Sammlungen, die diesen Leitfaden enthalten
Dieser Leitfaden ist Teil der folgenden ausgewählten Sammlungen von Kurzanleitungen, die allgemeinere Ziele der Android-Entwicklung abdecken:
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=de)
Liste oder Raster anzeigen
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=de)
Bilder anzeigen
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=de)