Hvordan og hvorfor du skal bruge Android Visibility Listeners
Android-brugergrænsefladen er opbygget af visninger, og i et almindeligt program er der normalt flere af dem. For at finde ud af, hvilken View brugeren i øjeblikket kigger på, skal du installere Visibility Listeners.
Læs nedenfor for at finde ud af, hvilke forskellige muligheder du har for at identificere synlighedsstatus for en View.
For at vores lyttere kan fungere, skal vi først sørge for, at vores View findes i layouthierarkiet. Der er to måder, hvorpå dette sker:
- Din View er allerede en del af dit layout, da den er defineret i en XML-fil
- Du har oprettet en View dynamisk, og du skal tilføje den ved hjælp af addView-metoden
En visnings synlighedsstatus er af typen Integer og kan have en af tre muligheder:
- VISIBLE (0) – Visningen er synlig for brugeren
- INVISIBLE (4) – Visningen er usynlig for brugeren, men optager stadig plads i layoutet
- GONE (8) – Visningen er usynlig, og den optager ikke plads i layoutet
Når vi er inde i vores layouthierarki, er der et par indbyggede muligheder, der hjælper os med at vide, hvornår vores visnings synlighed er ændret.
onVisibilityChanged
Denne metode udløses, når synligheden af visningen eller af en forfader til visningen er ændret. Status for synligheden findes inde i parameteren visibility.
onWindowVisibilityChanged
Denne metode udløses, når det indeholdende vindue for vores visning har ændret sin synlighed. Dette garanterer ikke, at det vindue, som din View befinder sig i, er synligt for brugeren, da det kan være skjult af et andet vindue.
Visibility Listeners In Action
For at se disse to lyttere i aktion skal vi oprette et simpelt projekt. Vi vil have et LinearLayout med et TextView og en knap. Vi vil få knappens on click-handling til at tilføje vores brugerdefinerede visning til layoutet.
Vores brugerdefinerede visning:
Og endelig skal koden i vores MainActivity:
Når vi kører programmet og trykker på knappen, får vi:
Du kan hente eksempelprojektet her.
ViewTreeObserver
Dette er et indfødt objekt, der har en lang række lyttere, som får besked om forskellige synlighedsændringer i visningstræet. Nogle fremtrædende, som du skal lægge mærke til, er:
- OnGlobalLayoutListener
- OnWindowAttachListener
- OnWindowFocusChangeListener
For at knytte en ViewTreeObserver skal du gøre følgende:
Linjen linearLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this)
sikrer, at lytteren kun bliver kaldt én gang. Hvis du ønsker at fortsætte med at lytte med på ændringer, skal du fjerne den.