W Jetpack Compose Glimmer GlimmerHorizontalPager to układ z leniwym
komponowaniem i przewijaniem w poziomie, który rozmieszcza strony sekwencyjnie.
Jest on podobny do standardowego HorizontalPager w Compose
Foundation, ale dostosowany do okularów z wyświetlaczem z zachowaniami i
wartościami domyślnymi Glimmer.
Domyślnie tylko jedna strona jest wyświetlana w widocznym miejscu. Aby zapewnić dopracowane wrażenia, pager używa animacji przyciągania, dzięki czemu strona zawsze dokładnie dopasowuje się do granic widocznego obszaru po zakończeniu gestu przewijania użytkownika.
GlimmerHorizontalPager.Kluczowe parametry i opcje układu
Element GlimmerHorizontalPager udostępnia konfigurowalne parametry, które pozwalają kontrolować odstępy, wyrównanie układu i leniwe ładowanie. Oto niektóre z tych parametrów:
| Parametr | Opis |
|---|---|
|
Obiekt |
|
Dopełnienie stosowane wokół ogólnych granic treści po przycięciu. Przydatne do dodawania dopełnienia przed pierwszą stroną lub po ostatniej stronie. |
|
Odstęp poziomy między poszczególnymi stronami w pagerze. |
|
Slot z możliwością komponowania, który renderuje wskaźnik aktywnej strony. Domyślnie jest to |
|
Liczba stron do skomponowania i ułożenia poza widocznym obszarem jako optymalizacja wstępnego wczytywania. Aby zachować wydajność leniwego komponowania, unikaj ustawiania dużych wartości. |
Informacje o wszystkich dostępnych parametrach znajdziesz w pełnej dokumentacji.
Zalecenie dotyczące animacji tekstu
Podczas animacji przyciągania i przejść w pagerze na okularach z wyświetlaczem domyślne renderowanie tekstu może powodować artefakty przyciągania pikseli. Ustawienie TextMotion.Animated zapewnia płynne renderowanie podczas animacji układu:
Text( text = "Page: $page", style = LocalTextStyle.current.copy(textMotion = TextMotion.Animated), )
Przykład: pager poziomy
Poniższy kod pokazuje, jak utworzyć podstawowy pager poziomy z 10 stronami, umieszczając kartę na każdej stronie:
// 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), ) } }
Najważniejsze informacje o kodzie
- Stan: inicjuje
GlimmerPagerStateza pomocąrememberGlimmerPagerState(pageCount = { 10 })aby zarządzać stanem pagera. - Zawartość slotu strony: otrzymuje indeks strony
pagew lambdzieGlimmerPagerScope, aby renderować każdą kartę. - Styl tekstu z płynną animacją: kopiuje
LocalTextStyle.currenti wyraźnie włączaTextMotion.Animated. - Automatyczny wskaźnik strony: w przeciwieństwie do standardowych pagerów Compose, które wymagają
zewnętrznego komponentu wskaźnika,
GlimmerHorizontalPagerdomyślnie automatycznie osadza wskaźnik strony w stylu kropek.
Wskaźniki strony
Domyślnie GlimmerHorizontalPager renderuje wskaźnik strony oparty na kropkach za pomocą
GlimmerHorizontalPagerDefaults.PageIndicator. Wskaźnik automatycznie dostosowuje schemat kolorów:
- Aktywna kropka używa koloru treści określonego na podstawie najbliższego otaczającego elementu
surface.
Możesz przekazać dostosowany element PageIndicator, aby określić wyraźne kolory, lub zastąpić kropkę własnym układem niestandardowym:
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), ) } )