Cum și de ce să folosiți Android Visibility Listeners

Interfața de utilizator Android este construită din vizualizări, iar într-o aplicație obișnuită există de obicei mai multe dintre ele. Pentru a afla la care Vizualizare se uită în prezent utilizatorul, trebuie să instalați Ascultătorii de vizibilitate.

Citiți mai jos pentru a afla despre diferitele opțiuni pe care le aveți pentru a identifica starea de vizibilitate a unei Vizualizări.

Pentru ca ascultătorii noștri să funcționeze, trebuie mai întâi să ne asigurăm că Vizualizarea noastră se găsește în ierarhia de aspect. Există două moduri în care se întâmplă acest lucru:

  1. Visualizarea dvs. face deja parte din layout, deoarece este definită într-un fișier XML
  2. Ați creat un View în mod dinamic și trebuie să îl adăugați folosind metoda addView
child este View-ul pe care doriți să îl adăugați, iar LayoutParams sunt parametrii layout-ului(I.E. width, and height)

Starea de vizibilitate a unui View este de tip Integer și poate avea una dintre cele trei opțiuni:

  1. VISIBLE (0) – Vizualizarea este vizibilă pentru utilizator
  2. INVISIBLE (4) – Vizualizarea este invizibilă pentru utilizator, dar ocupă în continuare spațiu în layout
  3. GONE (8) – Vizualizarea este invizibilă, și nu ocupă spațiu în layout

După ce ne aflăm în interiorul ierarhiei noastre de layout, există câteva opțiuni native care ne ajută să știm când s-a schimbat vizibilitatea View-ului nostru.

onVisibilityChanged

Această metodă este declanșată atunci când vizibilitatea vizualizării sau a unui strămoș al vizualizării s-a schimbat. Starea vizibilității se găsește în interiorul parametrului visibility.

onWindowVisibilityChanged

Această metodă este declanșată atunci când fereastra care conține vizualizarea noastră și-a schimbat vizibilitatea. Acest lucru nu garantează că fereastra în care se află View-ul dvs. este vizibilă pentru utilizator, deoarece aceasta poate fi ascunsă de o altă fereastră.

Visibility Listeners In Action

Pentru a vedea aceste două ascultătoare în acțiune, să creăm un proiect simplu. Vom avea un LinearLayout cu un TextView și un buton. Vom face ca acțiunea de clic a butonului să adauge vizualizarea noastră personalizată la layout.

Vederea noastră personalizată:

Și, în final, codul din MainActivity:

Alegăm un ascultător OnClick Listener la buton

Când rulăm aplicația și apăsăm butonul obținem:

Puteți vedea în Logcat că ascultătorii sunt apelați atunci când vizualizarea noastră intră în vedere

Puteți obține proiectul de probă aici.

ViewTreeObserver

Acesta este un obiect nativ care are o gamă largă de ascultători care sunt notificați de diferite modificări de vizibilitate ale arborelui de vizualizare. Unele dintre cele mai importante de luat în seamă sunt:

  • OnGlobalLayoutListener
  • OnWindowAttachListener
  • OnWindowFocusChangeListener

Pentru a atașa un ViewTreeObserver, trebuie să faceți următoarele:

removeOnGlobalLayoutListener necesită API > 15

Linia linearLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this)se asigură că ascultătorul va fi apelat doar o singură dată. Dacă doriți să continuați să ascultați la modificări, eliminați-o.

.