Di Jetpack Compose Glimmer, GlimmerHorizontalPager adalah tata letak yang disusun secara lambat
, dapat di-scroll secara horizontal, dan mengatur halaman secara berurutan.
Tata letak ini mirip dengan HorizontalPager standar yang ditemukan di Compose
Foundation, tetapi disesuaikan untuk display glasses dengan perilaku dan
nilai default Glimmer.
Secara default, hanya satu halaman yang ditampilkan secara jelas dalam satu waktu. Untuk memberikan pengalaman yang optimal, pager menggunakan animasi snap untuk memastikan halaman selalu ditempatkan tepat di batas area pandang setelah gestur scroll pengguna berakhir.
Parameter utama dan opsi tata letak
GlimmerHorizontalPager menyediakan parameter yang dapat disesuaikan untuk mengontrol penspasian, perataan tata letak, dan pemuatan lambat. Beberapa parameter ini adalah:
| Parameter | Deskripsi |
|---|---|
|
Objek |
|
Padding yang diterapkan di sekitar batas konten keseluruhan setelah kliping, berguna untuk menambahkan padding tepi awal atau akhir sebelum halaman pertama atau setelah halaman terakhir. |
|
Spasi horizontal antara halaman individual di pager. |
|
Slot composable yang merender indikator halaman aktif. Setelan defaultnya adalah |
|
Jumlah halaman yang akan disusun dan ditata di luar area pandang yang terlihat sebagai pengoptimalan pemuatan awal. Hindari menetapkan nilai yang besar untuk mempertahankan efisiensi komposisi lambat. |
Lihat dokumentasi referensi lengkap untuk mengetahui informasi tentang semua parameter yang tersedia.
Rekomendasi gerakan teks animasi
Selama animasi dan transisi snap pager di display glasses, rendering teks default dapat menampilkan artefak pixel-snapping. Menetapkan TextMotion.Animated memastikan rendering yang lancar di seluruh animasi tata letak:
Text( text = "Page: $page", style = LocalTextStyle.current.copy(textMotion = TextMotion.Animated), )
Contoh: Pager horizontal
Kode berikut menunjukkan cara membuat pager horizontal dasar dengan 10 halaman, menempatkan Kartu di dalam setiap halaman:
// 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), ) } }
Poin penting tentang kode
- Status: Menginisialisasi
GlimmerPagerStatemenggunakanrememberGlimmerPagerState(pageCount = { 10 })untuk mengelola status pager. - Konten slot halaman: Menerima indeks halaman
pagedi dalamGlimmerPagerScopelambda untuk merender setiap kartu. - Gaya teks animasi yang lancar: Menyalin
LocalTextStyle.currentdan secara eksplisit mengaktifkanTextMotion.Animated. - Indikator halaman otomatis: Tidak seperti pager Compose standar yang memerlukan
komponen indikator eksternal,
GlimmerHorizontalPagersecara otomatis menyematkan indikator halaman gaya titik secara default.
Indikator halaman
Secara default, GlimmerHorizontalPager merender indikator halaman berbasis titik menggunakan
GlimmerHorizontalPagerDefaults.PageIndicator. Indikator secara otomatis mengadaptasi skema warnanya:
- Titik aktif menggunakan warna konten yang di-resolve dari
surfaceterdekat.
Anda dapat meneruskan PageIndicator yang disesuaikan untuk menentukan warna eksplisit, atau mengganti titik dengan tata letak kustom Anda sendiri:
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), ) } )