Di Jetpack Compose Glimmer, GlimmerHorizontalPager adalah tata letak yang di-compose secara malas dan dapat di-scroll secara horizontal yang mengatur halamannya secara berurutan.
Mirip dengan HorizontalPager standar yang ada di Compose
Foundation, tetapi disesuaikan untuk kacamata tampilan dengan perilaku Glimmer dan
nilai default.
Secara default, hanya satu halaman yang ditampilkan dengan jelas dalam satu waktu. Untuk memberikan pengalaman yang lancar, pager menggunakan animasi penarikan untuk memastikan halaman selalu berada tepat di batas area tampilan setelah gestur scroll pengguna berakhir.
GlimmerHorizontalPager.Parameter utama dan opsi tata letak
GlimmerHorizontalPager menyediakan parameter yang dapat disesuaikan untuk mengontrol jarak, perataan tata letak, dan pemuatan lambat. Beberapa parameter tersebut adalah:
| Parameter | Deskripsi |
|---|---|
|
Objek |
|
Padding diterapkan di sekitar batas konten keseluruhan setelah pemangkasan, berguna untuk menambahkan padding tepi awal atau akhir sebelum halaman pertama atau setelah halaman terakhir. |
|
Jarak horizontal antara setiap halaman dalam pager. |
|
Slot composable yang merender indikator halaman aktif. Setelan defaultnya |
|
Jumlah halaman yang akan disusun dan ditata di luar area pandang yang terlihat sebagai pengoptimalan pra-pemuatan. Hindari menetapkan nilai 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 penyematan pager pada kacamata tampilan, rendering teks default dapat menunjukkan artefak penyematan piksel. 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 penomoran halaman 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
- State: Menginisialisasi
GlimmerPagerStatemenggunakanrememberGlimmerPagerState(pageCount = { 10 })untuk mengelola status pengatur halaman. - Konten slot halaman: Menerima indeks halaman
pagedi dalam lambdaGlimmerPagerScopeuntuk merender setiap kartu. - Gaya teks animasi halus: Menyalin
LocalTextStyle.currentdan mengaktifkanTextMotion.Animatedsecara eksplisit. - Indikator halaman otomatis: Tidak seperti penomoran halaman Compose standar yang memerlukan
komponen indikator eksternal,
GlimmerHorizontalPagerotomatis menyematkan indikator halaman gaya titik secara default.
Indikator halaman
Secara default, GlimmerHorizontalPager merender indikator halaman berbasis titik menggunakan
GlimmerHorizontalPagerDefaults.PageIndicator. Indikator otomatis
menyesuaikan skema warnanya:
- Titik aktif menggunakan warna konten yang diselesaikan dari
surfacedi sekitarnya yang terdekat.
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), ) } )