In Jetpack Compose Glimmer ist GlimmerHorizontalPager ein verzögert
zusammengesetztes, horizontal scrollbares Layout, in dem die Seiten sequenziell angeordnet sind.
Es ähnelt dem Standard-HorizontalPager in Compose
Foundation, ist aber auf Displaybrillen zugeschnitten und bietet Glimmer-Verhaltensweisen und
Standardwerte.
Standardmäßig wird jeweils nur eine Seite hervorgehoben. Um eine optimale Nutzererfahrung zu bieten, verwendet der Pager Snap-Animationen, damit eine Seite nach dem Ende der Scrollbewegung eines Nutzers immer genau an den Grenzen des Darstellungsbereichs positioniert wird.
GlimmerHorizontalPager.Wichtige Parameter und Layoutoptionen
GlimmerHorizontalPager bietet anpassbare Parameter zum Steuern von Abständen, Layoutausrichtung und Lazy Loading. Einige dieser Parameter sind:
| Parameter | Beschreibung |
|---|---|
|
Ein |
|
Abstand, der nach dem Zuschneiden um die Grenzen des Gesamtinhalts angewendet wird. Er ist nützlich, um vor der ersten Seite oder nach der letzten Seite einen Abstand am Anfang oder Ende hinzuzufügen. |
|
Der horizontale Abstand zwischen den einzelnen Seiten im Pager. |
|
Ein zusammensetzbarer Slot, der die aktive Seitenanzeige rendert. Der Standardwert ist |
|
Die Anzahl der Seiten, die über den sichtbaren Darstellungsbereich hinaus zusammengesetzt und angeordnet werden, um das Vorabladen zu optimieren. Setzen Sie keine großen Werte, um die Effizienz der verzögerten Zusammensetzung zu erhalten. |
In der vollständigen Referenzdokumentation finden Sie Informationen zu allen verfügbaren Parametern.
Empfehlung für animierte Textbewegung
Bei Snap-Animationen und Übergängen des Pagers auf Displaybrillen können bei der Standardtextwiedergabe Artefakte durch Pixel-Snapping auftreten. Wenn Sie TextMotion.Animated festlegen, wird der Text bei allen Layoutanimationen reibungslos gerendert:
Text( text = "Page: $page", style = LocalTextStyle.current.copy(textMotion = TextMotion.Animated), )
Beispiel: Horizontaler Pager
Der folgende Code zeigt, wie Sie einen einfachen horizontalen Pager mit 10 Seiten erstellen und auf jeder Seite eine Karte platzieren:
// Hoist the pager state, specifying the total page count with a lambda. val pagerState = rememberGlimmerPagerState(pageCount = { 10 }) GlimmerHorizontalPager( state = pagerState, modifier = Modifier.fillMaxSize(), ) { page -> // Use Glimmer components like Card and Text for optimized glasses styling. Card(modifier = Modifier.fillMaxWidth()) { Text( text = "Page: $page", // Recommended: use TextMotion.Animated for smooth transitions in a pager. style = LocalTextStyle.current.copy(textMotion = TextMotion.Animated), ) } }
Wichtige Punkte zum Code
- Status: Initialisiert einen
GlimmerPagerStatemitrememberGlimmerPagerState(pageCount = { 10 }), um den Status des Pagers zu verwalten. - Inhalt des Seitenslots: Empfängt den Seitenindex
pagein derGlimmerPagerScope-Lambda, um jede Karte zu rendern. - Textstil für reibungslose Animationen: Kopiert
LocalTextStyle.currentund aktiviert explizitTextMotion.Animated. - Automatische Seitenanzeige: Im Gegensatz zu Standard-Compose-Pagern, die
eine externe Anzeigekomponente erfordern,
GlimmerHorizontalPagerbettet standardmäßig automatisch eine Seitenanzeige im Punktstil ein.
Seitenanzeigen
Standardmäßig rendert GlimmerHorizontalPager eine punktbasierte Seitenanzeige mit
GlimmerHorizontalPagerDefaults.PageIndicator. Die Anzeige passt ihr Farbschema automatisch an:
- Der aktive Punkt verwendet die Inhaltsfarbe, die aus der nächstgelegenen umgebenden
surfaceabgeleitet wird.
Sie können eine angepasste PageIndicator übergeben, um explizite Farben anzugeben oder den Punkt durch ein eigenes benutzerdefiniertes Layout zu ersetzen:
GlimmerHorizontalPager( state = pagerState, modifier = Modifier.fillMaxSize(), // Use a page numbers instead of the default dot-indicator pageIndicator = { Text( text = "${pagerState.currentPage + 1} / ${pagerState.pageCount}", style = LocalTextStyle.current.copy(textMotion = TextMotion.Animated), ) } )