Chcę dodać 3 dolne kropki do mojego ViewPager, w ten sposób.
Używam FragmentActivity i wspieram bibliotekę ViewPager.
android
user-interface
android-viewpager
android-fragmentactivity
viewpagerindicator
Kfir Guy
źródło
źródło
Odpowiedzi:
Nie potrzeba tak dużo kodu.
Możesz robić wszystkie te rzeczy bez kodowania, używając tylko
viewpager
ztablayout
.Twój główny układ:
Podłącz nieaktywność lub fragment elementów interfejsu użytkownika w następujący sposób:
Kod Java:
To wszystko, dobrze jest iść.
Będziesz musiał utworzyć następujący plik zasobów xml w folderze, który można wyciągnąć .
tab_indicator_selected.xml
tab_indicator_default.xml
tab_selector.xml
Czujesz się tak leniwy jak ja? Cały powyższy kod jest konwertowany na bibliotekę! Sposób użycia Dodaj do swojej oceny:
implementation 'com.chabbal:slidingdotsplash:1.0.2'
Dodaj następujące elementy do układu działania lub fragmentu.Utwórz tablicę liczb całkowitych
strings.xml
npGotowe! Dodatkowo w celu odsłuchania zmian na stronie użyj linku
addOnPageChangeListener(listener);
Github .źródło
com.google.android.material.tabs.TabLayout
w nowszych wersjachring
. Wygląda na to, że pierścień jest również używany w bibliotece slidedotsplash zamiast owalu.Moje ręcznie wykonane rozwiązanie:
W układzie:
I w działaniu
źródło
Layout
tylko do kropki? UżyjView
zamiast tego.źródło
setOnPageChangedListener()
przestarzałe !! UżyjaddOnPageChangedListener()
teraz.Utworzyłem bibliotekę, aby zaspokoić potrzebę wskaźnika strony w ViewPager. Moja biblioteka zawiera widok o nazwie DotIndicator. Aby skorzystać z mojej biblioteki, dodaj
compile 'com.matthew-tamlin:sliding-intro-screen:3.2.0'
do pliku kompilacji stopni.Widok można dodać do układu, dodając następujące elementy:
Powyższy kod doskonale odwzorowuje funkcjonalność kropek na ekranie głównym Launchera Google, jednak jeśli chcesz go dalej dostosować, możesz dodać następujące atrybuty:
app:unselectedDotDiameter
iapp:selectedDotDiameter
aby ustawić średnice kropekapp:unselectedDotColor
iapp:selectedDotColor
aby ustawić kolory kropekapp:spacingBetweenDots
aby zmienić odległość między kropkamiapp:dotTransitionDuration
ustawić czas animacji zmiany z małej na dużą (iz powrotem)Ponadto widok można utworzyć programowo za pomocą:
Istnieją metody modyfikowania właściwości, podobne do atrybutów. Aby zaktualizować wskaźnik, aby wyświetlał inną wybraną stronę, wystarczy wywołać metodę
indicator.setSelectedItem(int, true)
od wewnątrzViewPager.OnPageChangeListener.onPageSelected(int)
.Oto przykład użycia:
Jeśli jesteś zainteresowany, biblioteka została zaprojektowana do tworzenia ekranów wprowadzających, takich jak pokazane w powyższym gifie.
Źródło Github dostępne tutaj: https://github.com/MatthewTamlin/SlidingIntroScreen
źródło
int getNumberOfItems()
ivoid setNumberOfItems()
. Zamiast wyłapać wyjątek, możesz zrobić coś takiego: gist.github.com/MatthewTamlin/761c7338d271af29526edc7859480aef .ViewPagerIndicator
nie był aktualizowany od 2012 roku i otrzymał kilka błędów, które nigdy nie zostały naprawione.W końcu znalazłem alternatywę dla tej biblioteki światła, która wyświetla ładne kropki
viewpager
, oto link:https://github.com/ongakuer/CircleIndicator
Łatwy do wdrożenia!
źródło
Pomyślałem o opublikowaniu prostszego rozwiązania powyższego problemu, a numery wskaźników można dynamicznie zmieniać za pomocą tylko jednej zmiennej,
dotCounts=x
co zrobiłem, tak to wygląda.1) Utwórz plik xml w folderze do rysowania dla wybranego wskaźnika strony o nazwie „item_selected”.
2) Utwórz jeszcze jeden plik xml dla niezaznaczonego wskaźnika o nazwie „item_unselected”
3) Teraz dodaj dodaj tę część kodu w miejscu, w którym chcesz wyświetlić wskaźniki ex np
viewPager
. W pliku XML układu.4) Dodaj tę funkcję na górze pliku pliku aktywności, w którym układ jest zawyżony lub z którym związany jest powyższy plik xml
5) Na koniec w metodzie onCreate dodaj następujący kod, aby odwoływać się do układu i obsługiwać pozycje wybrane na stronie
źródło
Możesz wypróbować bibliotekę Jake'a Whartona - https://github.com/JakeWharton/Android-ViewPagerIndicator
źródło
Oto moje proponowane rozwiązanie.
A) Poniżej znajduje się moja aktywność
B) pager_item.xml
C) MainActivity.java
D) CustomPagerAdapter.java
E) selecteditem_dot.xml
F) nonselecteditem_dot.xml
źródło
Jeśli ktoś chce budować
viewPager
z miniaturami jako wskaźnikami, skorzystanie z tej biblioteki może być opcją: ThumbIndicator dla viewPager, który działa również z łączami obrazów jako zasobami.źródło
Oto jak to zrobiłem, nieco podobne do powyższych rozwiązań. Tylko upewnij się nazywają () loadDots metoda po wszystkie obrazy zostaną pobrane .
źródło