Hoe en waarom Android Visibility Listeners
De Android UI is opgebouwd uit Views, en in een reguliere applicatie, zijn er meestal meerdere van hen. Om erachter te komen welke View de gebruiker op dit moment bekijkt, moet u Visibility Listeners installeren.
Lees hieronder om meer te weten te komen over de verschillende opties die u hebt om de zichtbaarheid status van een View te identificeren.
Om onze listeners te laten werken, moeten we eerst ervoor zorgen dat onze View wordt gevonden in de lay-out hiërarchie. Dit kan op twee manieren gebeuren:
- Uw View maakt al deel uit van uw layout, omdat hij in een XML-bestand is gedefinieerd
- U hebt dynamisch een View gemaakt, en u moet hem toevoegen met de addView-methode
De zichtbaarheidsstatus van een View is van het type Integer en kan een van de drie opties hebben:
- VISIBLE (0) – De View is zichtbaar voor de gebruiker
- INVISIBLE (4) – De View is onzichtbaar voor de gebruiker, maar neemt nog wel ruimte in de lay-out in
- GONE (8) – De View is onzichtbaar, en neemt geen ruimte in op de layout
Eenmaal binnen onze layout-hiërarchie, zijn er een paar native opties om ons te helpen weten wanneer de zichtbaarheid van onze View veranderd is.
onVisibilityChanged
Deze methode wordt geactiveerd wanneer de zichtbaarheid van de view of van een voorouder van de view is veranderd. De status van de zichtbaarheid is te vinden in de zichtbaarheidsparameter.
onWindowVisibilityChanged
Deze methode wordt geactiveerd wanneer de zichtbaarheid van het venster waarin onze View zich bevindt, is gewijzigd. Dit garandeert niet dat het venster waarin uw View zich bevindt zichtbaar is voor de gebruiker, aangezien het kan worden verborgen door een ander venster.
Visibility Listeners in actie
Om deze twee listeners in actie te zien, laten we een eenvoudig project maken. We hebben een LinearLayout met een TextView en een knop. We zorgen ervoor dat de klik-actie van de knop onze aangepaste view aan de layout toevoegt.
Onze aangepaste weergave:
En tot slot de code in onze MainActivity:
Wanneer we de toepassing uitvoeren en op de knop drukken, krijgen we:
Het voorbeeldproject kunt u hier krijgen.
ViewTreeObserver
Dit is een native object dat een groot aantal listeners heeft die op de hoogte worden gebracht van verschillende veranderingen in de view tree. Enkele prominente zijn:
- OnGlobalLayoutListener
- OnWindowAttachListener
- OnWindowFocusChangeListener
Om een ViewTreeObserver te koppelen, moet u het volgende doen:
De regel linearLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this)
zorgt ervoor dat de listener maar één keer wordt aangeroepen. Als u wilt blijven luisteren naar wijzigingen, verwijdert u deze regel.