3. CONTROLES NATIFS


Table des matières

Cette section répertorie, pour les plateformes Android (Google) et iOS (Apple), d’importantes informations sur les contrôles présentés dans les recommandations de la section précédente. On trouvera donc dans cette section, pour chacun de ces contrôles, les informations suivantes :

  • Les propriétés importantes pour définir l’accessibilité des contrôles
  • Les librairies internes ou externes qui peuvent être utilisées
  • D’autres informations utiles

Tous les contrôles natifs doivent avoir les caractéristiques suivantes :

  1. Ils sont ignorés par les services d’accessibilité lorsqu’ils ne sont pas visibles à l’écran, soit parce qu’ils ont été cachés dynamiquement ou qu’ils sont dans une section non visible de l’écran.

  2. Ils sont considérés par les services d’accessibilité uniquement lorsqu’ils ont une fonction ou contribuent à l’expérience utilisateur.


3.1 Android

Cette page présente l’accessibilité du contrôle de base de tous les autres contrôles offerts sur Android : View . Le lecteur devra considérer que le cas d’usage décrit dans cette page s’applique à tous les autres contrôles de la plateforme Android.

Des exemples seront rajoutés à cette section au fur et à mesure.

ANDROID

Définition

<View
   android:id="@+id/"
   android:layout_width="@dimen/separator_width"
   android:layout_height="@dimen/separator_height"
   android:importantForAccessibility="yes"
   android:accessibilityTraversalAfter="@id/text_view"
   android:accessibilityLiveRegion="polite"
   android:layout_below="@id/text_view"
   android:contentDescription="@string/press_to_start" />

Définition déclarative d'une View  sur Android

final View dynamicView = new View(getApplicationContext());
dynamicView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);
dynamicView.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_POLITE);
dynamicView.setAccessibilityTraversalAfter(R.id.text_view);
dynamicView.setContentDescription(getString(R.string.press_to_start));

Définition programmatique d'une View  sur Android


PROPRIÉTÉS

Les définitions plus haut précisent des valeurs pour les propriétés importantes pour la plateforme Android. Ces propriétés sont les suivantes :

  • L'importance de la vue

Il est possible de spécifier l'importance de cette vue pour les services d'accessibilité (TalkBack, Navigation par focus, etc...) à l'aide de la propriété suivante :  isImportantForAccessibility (ref, en anglais) Les valeurs possibles de cette propriété sont :


CONSTANTVALUEDESCRIPTION
auto0Laisser le système déterminer la pertinence de la vue pour l'accessibilité. Valeur par défaut (recommandée).
yes1La vue n'est pas importante pour les services d'accessibilité.
no2La vue est importante pour les services d'accessibilité.
noHideDescendants4La vue n'est pas importante pour les services d'accessibilité, et ses descendants non plus ne le sont pas.
    Exemple : Lorsque la publicité démarre.
  • La description du contrôle

Le développeur peut spécifier aux services d'accessibilité une description de l'élément qui sera utilisée pour donner plus de contexte à l'utilisateur. La propriété en question est : contentDescription. La valeur pour cette propriété est une chaîne de caractères qui décrit de manière concise l'utilité du contrôle. Consultez cet article (en anglais) pour voir ce qu'est un bon message de description.

android:contentDescription="@string/press_to_start"

ou

dynamicView.setContentDescription(getContext().getString(R.string.press_to_start));


  • Le comportement des services d'accessibilité lorsque la vue change

Il est possible de spécifier le comportement que les services d'accessibilité doivent adopter lorsqu'une vue change d'état ou est rafraîchie :  accessibilityLiveRegion (ref, en anglais) Les différentes valeurs possibles de cette propriété sont les suivantes :


CONSTANTVALUEDESCRIPTION
none0Les services d'accessibilité ne doivent pas annoncer les changements de cette vue.
polite1Les services d'accessibilité doivent annoncer les changements de cette vue.
assertive2Les services d'accessibilité doivent interrompre le discours en cours pour annoncer les changements de cette vue.

Voici les constantes qui représentent les valeurs possibles de cette propriété :


  • Après quel autre élément ce contrôle doit être pris en compte par les services d'accessibilité

Il est possible de spécifier aux services d'accessibilité que cette   View  doit être prise en compte (prise de focus, ou annonce par le service de TalkBack) directement après un autre élément. La propriété en question est :  accessibilityTraversalAfter  (ref: en anglais) La valeur à attribuer à cette propriété est l'identifiant de la vue après laquelle cet élément doit être pris en compte, ex. :

android:accessibilityTraversalAfter="@id/text_view"

ou 

dynamicView.setAccessibilityTraversalAfter(R.id.text_view);


  • Avant quel autre élément ce contrôle doit être pris en compte par les services d'accessibilité

Il est possible de spécifier aux services d'accessibilité que cette View doit être prise en compte (prise de focus ou annonce par le service de TalkBack) avant un autre élément. La propriété en question est : accessibilityTraversalBefore   (ref : en anglais) La valeur à attribuer à cette propriété est l'identifiant de la vue après laquelle cet élément doit être pris en compte, ex. :

android:accessibilityTraversalBefore="@id/text_view"

ou 

dynamicView.setAccessibilityTraversalBefore(R.id.text_view);


ATTENTION

  • La propriété accessibilityLiveRegion  est offerte qu'à partir de API 19
  • Les propriétés accessibilityTraversalAfter  et accessibilityTraversalBefore  ne sont offertes qu'à partir de API 21.


RESSOURCES


3.1.1 Boutons

Cet article montre un cas d’usage du contrôle natif Button  utilisé pour représenter les boutons sur la plateforme Android.

ANDROID

DÉFINITION

<Button
       android:layout_width="@dimen/button_width"
       android:layout_height="@dimen/button_height"
       android:text="@string/oui"
       android:importantForAccessibility="yes"
       android:accessibilityTraversalAfter="@id/text_view"
       android:accessibilityLiveRegion="polite"
       android:layout_below="@id/text_view"
       android:contentDescription="@string/press_to_start"/>

Définition déclarative d'un bouton sur Android

final Button dynamicButton = new Button(getApplicationContext());
dynamicButton.setText(R.string.oui);
dynamicButton.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);
dynamicButton.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_POLITE);
dynamicButton.setAccessibilityTraversalAfter(R.id.text_view);
dynamicButton.setContentDescription(getString(R.string.press_to_start));

 Définition programmatique d'un bouton sur Android



PROPRIÉTÉS

En dehors de celles de la classe  View  (lien) , l'objet Button  n'a aucune propriété importante pour l'accessibilité.

REMARQUES

Ce cas d'usage pourrait tout aussi bien s'appliquer au contrôle  AppCompatButton, qui est une classe qui étend Button.

RESSOURCES


3.1.2 Images

Cet article montre un exemple d’utilisation du contrôle natif ImageView  employé pour représenter les images sur la plateforme Android.

ANDROID


DÉFINITION

<ImageView
   android:id="@+id/cached_content_indicator"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content
   android:importantForAccessibility="no"
   android:src="@drawable/ic_cached_black"/>

Définition déclarative d'une image sur Androïd

final ImageView dynamicImageView = new ImageView(getApplicationContext());
dynamicImageView.setImageResource(R.drawable.ic_cached_black);
dynamicImageView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);

Définition programmatique d'une image sur Androïd


PROPRIÉTÉS

En dehors de celles de la classe  View  (lien) , l'objet ImageView   n'a aucune propriété importante pour l'accessibilité.

REMARQUES

Ce cas d'usage pourrait tout aussi bien s'appliquer au contrôle AppCompatImageView  (ref, en anglais)  qui est une classe qui étend ImageView .

RESSOURCES


3.2 iOS

Cette section regroupe des applications concrètes sur la plateforme iOS des recommandations faites dans le groupe d’article précédent.

Des exemples seront rajoutés à cette section au fur et à mesure.