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:

  1. Din View er allerede en del af dit layout, da den er defineret i en XML-fil
  2. Du har oprettet en View dynamisk, og du skal tilføje den ved hjælp af addView-metoden
child er den View, du vil tilføje, og LayoutParams er layoutparametrene(dvs. bredde og højde)

En visnings synlighedsstatus er af typen Integer og kan have en af tre muligheder:

  1. VISIBLE (0) – Visningen er synlig for brugeren
  2. INVISIBLE (4) – Visningen er usynlig for brugeren, men optager stadig plads i layoutet
  3. 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:

Vi knytter en OnClick Listener til knappen

Når vi kører programmet og trykker på knappen, får vi:

Du kan se inde i Logcat, at lytterne kaldes, når vores visning kommer til syne

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:

removeOnGlobalLayoutListener kræver API > 15

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.