Android ViewPager avec des points bas
Je veux ajouter 3 points bas de mon ViewPager, comme ceci.
- Je utiliser FragmentActivity et le soutien de la bibliothèque ViewPager.
- J'ai besoin d'ajouter des points, pas des onglets (comme le Nexus 5 de lanceur).
- Découvrez ma solution: stackoverflow.com/a/38459310/4631935
Vous devez vous connecter pour publier un commentaire.
Pas nécessaire pour que la quantité de code.
Vous pouvez faire tout ça sans codage tellement en utilisant uniquement
viewpager
avectablayout
.Votre page principale:
Accrocher vos éléments d'INTERFACE utilisateur de l'inactivité ou du fragment comme suit:
De Code Java:
Que c'est, vous êtes bon pour aller.
Vous aurez besoin pour créer le fichier xml suivant fichier de ressources dans le drawable dossier.
tab_indicator_selected.xml
tab_indicator_default.xml
tab_selector.xml
Sentiment paresseux comme je suis? Eh bien, tout le code ci-dessus est convertie en bibliothèque!
Utilisation
Ajoutez la ligne suivante dans votre gradle:
implementation 'com.chabbal:slidingdotsplash:1.0.2'
Ajoutez les lignes suivantes à votre Activité ou Fragment de mise en page.
Créer un tableau d'entiers en
strings.xml
par exempleFait!
Supplémentaire pour écouter les changements de page utiliser
addOnPageChangeListener(listener);
Github lien.
shape
comme l'élément racine de l'indicateur à un drawable. Il n'y a pas besoin d'envelopper comme des éléments individuels dans unelayer-list
.GetPageTitleFormatted
que vous allez vous retrouver avec des onglets avec des titres et des points.Xamarin.Android
. grande réponse.com.google.android.material.tabs.TabLayout
dans des Versions plus récentessetOnPageChangedListener()
obsolète!! UtilisationaddOnPageChangedListener()
maintenant.Ma main de la solution:
Dans la mise en page:
Et à l'Activité
Layout
juste pour mettre un point? UtilisationView
à la place.J'ai créé une bibliothèque pour répondre à la nécessité d'un indicateur de page dans un ViewPager. Ma bibliothèque contient une Vue appelée DotIndicator. Pour utiliser ma bibliothèque, ajouter
compile 'com.matthew-tamlin:sliding-intro-screen:3.2.0'
pour votre fichier de build gradle.La Vue peut être ajouté à votre disposition par l'adjonction de ce qui suit:
Le code ci-dessus reproduit parfaitement la fonctionnalité des points sur le Google Lanceur de l'écran d'accueil, cependant si vous souhaitez le personnaliser, puis les attributs suivants peuvent être ajoutés:
app:unselectedDotDiameter
etapp:selectedDotDiameter
pour définir le diamètre des pointsapp:unselectedDotColor
etapp:selectedDotColor
pour définir les couleurs des pointsapp:spacingBetweenDots
pour modifier la distance entre les pointsapp:dotTransitionDuration
pour régler le temps pour animer le changement, de petite à grande (et retour)En outre, la vue peut être créé par programmation à l'aide de:
Méthodes existent pour modifier les propriétés semblables aux attributs. Pour mettre à jour l'indicateur à afficher une autre page que sélectionné, il suffit d'appeler la méthode
indicator.setSelectedItem(int, true)
de l'intérieurViewPager.OnPageChangeListener.onPageSelected(int)
.Voici un exemple d'utilisation:
Si vous êtes intéressé, la bibliothèque a été effectivement conçu pour rendre intro écrans comme celui montré dans le gif ci-dessus.
Github le code source disponible ici: https://github.com/MatthewTamlin/SlidingIntroScreen
int getNumberOfItems()
etvoid setNumberOfItems()
. Plutôt que de capturer l'exception, vous pourriez faire quelque chose comme ceci gist.github.com/MatthewTamlin/761c7338d271af29526edc7859480aef.ViewPagerIndicator
n'a pas été mis à jour depuis 2012 et a obtenu plusieurs bugs qui n'ont jamais été corrigés.J'ai enfin trouvé une alternative avec cette lumière, bibliothèque du qui affiche belle des points pour le
viewpager
, voici le lien:https://github.com/ongakuer/CircleIndicator
Facile à mettre en œuvre!
J'ai pensé à l'affichage d'une solution plus simple pour le problème ci-dessus et indicateur de numéros peuvent être modifiés dynamiquement avec seulement modification d'une valeur de la variable
dotCounts=x
ce que j'ai fait va comme ceci.1) Créer un fichier xml dans le dossier drawable pour la page sélectionnée indicateur nommé "item_selected".
2) Créer un plus fichier xml pour les non sélectionnés indicateur nommé "item_unselected"
3) ajouter Maintenant ajouter de la présente partie du code à l'endroit où vous souhaitez afficher les indicateurs de l'ex-dessous
viewPager
dans votre Mise en page fichier XML.4) Ajouter cette fonction sur le dessus de votre activité de fichier de fichier de votre mise en page est gonflé ou le fichier xml est liée à
5) Enfin dans votre méthode onCreate ajoutez le code suivant pour faire référence à votre disposition et gérer pageselected positions
Vous pouvez essayer de Jake Wharton la bibliothèque de https://github.com/JakeWharton/Android-ViewPagerIndicator
Qui suit est ma solution proposée.
A) qui Suit est mon activity_main.xml
B) pager_item.xml
C) MainActivity.java
D) CustomPagerAdapter.java
E) selecteditem_dot.xml
F) nonselecteditem_dot.xml
Si quelqu'un veut construire une
viewPager
avec des miniatures comme des indicateurs, l'utilisation de cette bibliothèque pourrait être une option:ThumbIndicator pour viewPager qui fonctionne également avec le lien d'une image en tant que ressources.
Voici comment je l'ai fait, un peu comme les solutions ci-dessus. Assurez-vous simplement que vous appelez la loadDots() méthode après toutes les images sont téléchargées.