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.
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 Gesamtgrenzen des Inhalts angewendet wird. Er ist nützlich, um vor der ersten 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. Standardmäßig |
|
Die Anzahl der Seiten, die über den sichtbaren Darstellungsbereich hinaus zusammengesetzt und angeordnet werden sollen, um das Vorabladen zu optimieren. Setzen Sie keine großen Werte, um die Effizienz der verzögerten Komposition zu erhalten. |
Die vollständige Referenzdokumentation enthält 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 das Ausrichten an Pixeln auftreten. Wenn Sie TextMotion.Animated festlegen, wird der Text bei 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, wobei auf jeder Seite eine Karte platziert wird:
// 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 Animation: 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 das 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), ) } )