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 :
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.
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 :
CONSTANT | VALUE | DESCRIPTION |
---|---|---|
auto | 0 | Laisser le système déterminer la pertinence de la vue pour l'accessibilité. Valeur par défaut (recommandée). |
yes | 1 | La vue n'est pas importante pour les services d'accessibilité. |
no | 2 | La vue est importante pour les services d'accessibilité. |
noHideDescendants | 4 | La 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 :
CONSTANT | VALUE | DESCRIPTION |
---|---|---|
none | 0 | Les services d'accessibilité ne doivent pas annoncer les changements de cette vue. |
polite | 1 | Les services d'accessibilité doivent annoncer les changements de cette vue. |
assertive | 2 | Les 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é :
PARAMETERS | |
---|---|
mode |
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.