Comment et pourquoi utiliser les Visibility Listeners d’Android

L’interface utilisateur d’Android est construite à partir de Views, et dans une application régulière, il y en a généralement plusieurs. Pour savoir quelle vue l’utilisateur regarde actuellement, vous devez installer des Visibility Listeners.

Lisez ce qui suit pour découvrir les différentes options dont vous disposez pour identifier l’état de visibilité d’une vue.

Pour que nos listeners fonctionnent, nous devons d’abord nous assurer que notre vue se trouve dans la hiérarchie de la mise en page. Cela peut se produire de deux façons :

  1. Votre vue fait déjà partie de votre layout car elle est définie dans un fichier XML
  2. Vous avez créé une vue dynamiquement, et vous devez l’ajouter en utilisant la méthode addView
child est la vue que vous voulez ajouter et LayoutParams sont les paramètres du layout(I.E. largeur, et hauteur)

L’état de visibilité d’une vue est de type Integer et peut avoir l’une des trois options suivantes :

  1. VISIBLE (0) – La vue est visible pour l’utilisateur
  2. INVISIBLE (4) – La vue est invisible pour l’utilisateur, mais prend encore de la place dans la mise en page
  3. GONE (8) – La vue est invisible, et elle ne prend pas de place dans la mise en page

Une fois à l’intérieur de notre hiérarchie de mise en page, il y a quelques options natives pour nous aider à savoir quand la visibilité de notre vue a changé.

onVisibilityChanged

Cette méthode est déclenchée lorsque la visibilité de la vue ou d’un ancêtre de la vue a changé. L’état de la visibilité se trouve à l’intérieur du paramètre visibility.

onWindowVisibilityChanged

Cette méthode est déclenchée lorsque la fenêtre contenant notre vue a changé de visibilité. Cela ne garantit pas que la fenêtre dans laquelle se trouve votre Vue soit visible par l’utilisateur, car elle peut être masquée par une autre fenêtre.

Les écouteurs de visibilité en action

Pour voir ces deux écouteurs en action, créons un projet simple. Nous aurons un LinearLayout avec un TextView et un bouton. Nous allons faire en sorte que l’action on click du bouton ajoute notre vue personnalisée au layout.

Notre vue personnalisée:

Et enfin, le code dans notre MainActivity :

Nous attachons un écouteur OnClick au bouton

Lorsque nous exécutons l’application et que nous appuyons sur le bouton, nous obtenons :

Vous pouvez voir à l’intérieur de Logcat que les écouteurs sont appelés lorsque notre vue apparaît

Vous pouvez obtenir l’exemple de projet ici.

ViewTreeObserver

C’est un objet natif qui a un large éventail d’écouteurs qui sont notifiés de divers changements de visibilité de l’arbre de vue. Certains proéminents à prendre note sont :

  • OnGlobalLayoutListener
  • OnWindowAttachListener
  • OnWindowFocusChangeListener

Pour attacher un ViewTreeObserver, vous devez faire ce qui suit :

removeOnGlobalLayoutListener requires API > 15

La ligne linearLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this) s’assure que l’écouteur ne sera appelé qu’une seule fois. Si vous voulez continuer à écouter les changements, supprimez-la.