Saya ingin menambahkan 3 titik terbawah ke dalam ViewPager saya, seperti ini.
Saya menggunakan FragmentActivity dan mendukung perpustakaan ViewPager.
android
user-interface
android-viewpager
android-fragmentactivity
viewpagerindicator
Kfir Guy
sumber
sumber
Jawaban:
Tidak perlu kode sebanyak itu.
Anda dapat melakukan semua hal ini tanpa terlalu banyak coding hanya
viewpager
dengan menggunakantablayout
.Tata Letak utama Anda:
Sambungkan elemen UI Anda tanpa aktivitas atau fragmen sebagai berikut:
Kode Java:
Itu saja, Anda baik untuk pergi.
Anda harus membuat file sumber daya xml berikut di folder drawable .
tab_indicator_selected.xml
tab_indicator_default.xml
tab_selector.xml
Merasa malas seperti saya? Nah, semua kode di atas dikonversi menjadi perpustakaan! Penggunaan Tambahkan yang berikut di gradle Anda:
implementation 'com.chabbal:slidingdotsplash:1.0.2'
Tambahkan berikut ini ke aktivitas atau tata letak Fragmen Anda.Buat array integer di
strings.xml
misSelesai! Ekstra untuk mendengarkan perubahan halaman, gunakan tautan
addOnPageChangeListener(listener);
Github .sumber
com.google.android.material.tabs.TabLayout
dalam Versi yang lebih baruring
. Sepertinya cincin juga digunakan dalam pustaka slidingdotsplash bukan oval.Solusi buatan tangan saya:
Dalam tata letak:
Dan dalam Aktivitas
sumber
Layout
hanya untuk menaruh titik? GunakanView
sebagai gantinya.sumber
setOnPageChangedListener()
usang !! GunakanaddOnPageChangedListener()
sekarangSaya membuat perpustakaan untuk menjawab kebutuhan akan indikator halaman di ViewPager. Perpustakaan saya berisi Tampilan yang disebut DotIndicator. Untuk menggunakan perpustakaan saya, tambahkan
compile 'com.matthew-tamlin:sliding-intro-screen:3.2.0'
ke file build gradle Anda.Tampilan dapat ditambahkan ke tata letak Anda dengan menambahkan yang berikut:
Kode di atas secara sempurna mereplikasi fungsionalitas titik-titik pada layar beranda Peluncur Google, namun jika Anda ingin menyesuaikannya lebih lanjut maka atribut berikut dapat ditambahkan:
app:unselectedDotDiameter
danapp:selectedDotDiameter
untuk mengatur diameter titik-titikapp:unselectedDotColor
danapp:selectedDotColor
untuk mengatur warna titik-titikapp:spacingBetweenDots
untuk mengubah jarak antara titik-titikapp:dotTransitionDuration
untuk mengatur waktu untuk menghidupkan perubahan dari kecil ke besar (dan kembali)Selain itu, tampilan dapat dibuat secara terprogram menggunakan:
Ada metode untuk memodifikasi properti, mirip dengan atribut. Untuk memperbarui indikator untuk menampilkan halaman berbeda seperti yang dipilih, cukup panggil metode
indicator.setSelectedItem(int, true)
dari dalamViewPager.OnPageChangeListener.onPageSelected(int)
.Berikut ini contoh penggunaannya:
Jika Anda tertarik, perpustakaan sebenarnya dirancang untuk membuat layar intro seperti yang ditunjukkan pada gif di atas.
Sumber Github tersedia di sini: https://github.com/MatthewTamlin/SlidingIntroScreen
sumber
int getNumberOfItems()
danvoid setNumberOfItems()
. Daripada menangkap pengecualian, Anda dapat melakukan sesuatu seperti gist.github.com/MatthewTamlin/761c7338d271af29526edc7859480aef .ViewPagerIndicator
belum diperbarui sejak 2012 dan mendapat beberapa bug yang tidak pernah diperbaiki.Saya akhirnya menemukan alternatif dengan perpustakaan ringan ini yang menampilkan titik-titik bagus untuk
viewpager
, di sini adalah tautannya:https://github.com/ongakuer/CircleIndicator
Mudah diimplementasikan!
sumber
Saya berpikir untuk memposting solusi yang lebih sederhana untuk masalah di atas dan nomor indikator dapat diubah secara dinamis dengan hanya mengubah satu nilai variabel
dotCounts=x
yang saya lakukan seperti ini.1) Buat file xml di folder yang dapat digambar untuk indikator yang dipilih halaman bernama "item_selected".
2) Buat satu file xml lagi untuk indikator tidak dipilih bernama "item_unselected"
3) Sekarang tambahkan tambahkan bagian kode ini di tempat Anda ingin menampilkan indikator untuk ex
viewPager
di bawah ini dalam file Layout XML Anda.4) Tambahkan fungsi ini di atas file file aktivitas Anda di mana tata letak Anda meningkat atau file xml di atas terkait
5) Akhirnya dalam metode onCreate Anda tambahkan kode berikut untuk referensi tata letak Anda dan menangani posisi yang dipilih halaman
sumber
Anda dapat mencoba perpustakaan Jake Wharton - https://github.com/JakeWharton/Android-ViewPagerIndicator
sumber
Berikut ini adalah solusi yang saya usulkan.
A) Berikut ini adalah activity_main.xml saya
B) pager_item.xml
C) MainActivity.java
D) CustomPagerAdapter.java
E) selecteditem_dot.xml
F) nonselecteditem_dot.xml
sumber
Jika ada yang ingin membuat
viewPager
thumbnail dengan indikator, menggunakan pustaka ini bisa menjadi pilihan: ThumbIndicator untuk viewPager yang berfungsi juga dengan tautan gambar sebagai sumber.sumber
Inilah cara saya melakukan ini, agak mirip dengan solusi di atas. Pastikan Anda memanggil loadDots () metode setelah semua gambar di-download .
sumber