Tutoriel sur les sélecteurs de ressource sous Android

Lars Vogel

Traducteur

Mishulyna

Ce tutoriel décrit le fonctionnement des sélecteurs de ressource sous Android et la gestion de différentes tailles d'écran, langues et densités sur différents appareils.

Les commentaires et les suggestions d'amélioration sont les bienvenus, alors, après votre lecture, n'hésitez pas. Commentez .

- Titre : Tutoriel sur les sélecteurs de ressource sous Android

- Auteur : Lars Vogel

- Traducteur : Mishulyna

- Parution : 28 février 2014

- Public visé :

- Licence : Le contenu de cet article est rédigé par Lars Vogel et est mis à disposition selon les termes de la Licence Creative Commons Attribution - Partage dans les Mêmes Conditions 3.0 non transposé. Les logos Developpez.com, en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 Developpez.com.

Sommaire

- 1. Les configurations des appareils

- 1-1. Gérer différents appareils Android

- 1-2. Les qualificateurs de ressource

- 2. Les principaux qualificateurs de ressource

- 2-1. La densité

- 2-2. L'orientation

- 2-3. Les chaînes de caractères et les traductions

- 2-4. Les qualificateurs de version Android

- 2-5. Les qualificateurs associés à la largeur et la hauteur

- 2-6. Autres qualificateurs de ressource

- 3. La densité de l'écran

- 3-1. Pourquoi gérer des densités d'écran différentes ?

- 3-2. Utiliser la densité comme qualificateur de ressource

- 3-3. La taille des icônes

- 4. Définir la taille des composants de l'IU dans les fichiers de mise en page

- 4-1. Dimensions fixes ou relatives

- 4-2. Utiliser dp comme dimension relative Using dp as relative dimension

- 4-3. Utiliser sp pour mettre à l'échelle le texte dans les préférences utilisateur

- 5. Définir la taille des composants de l'IU dans le code source

- 6. Fragments

- 7. Liens

- 7-1. Code source

- 7-2. Ressources soutenant differentes tailles d'écran Resources Supporting different screen sizes

- 8. Remerciements

1 - Les configurations des appareils

1-1 - Gérer différents appareils Android

Les appareils Android arrivent dans une variété de configurations différentes concernant la taille, la densité en pixels de l'écran, les paramètres de langue, etc.

Pour fournir les ressources et paramétrages appropriés pour ces configurations différentes, Android prend en charge la sélection automatique des ressources et la définition de la taille des composants de l'interface utilisateur dans un format de taille relative (device independent pixel)(1).

1-2 - Les qualificateurs de ressource

Android vous permet d'utiliser des qualificateurs pour spécifier que certaines ressources doivent servir uniquement pour une configuration spécifique de périphérique (par exemple, orientation, résolution, langues). Pour fournir différents fichiers de ressources, par exemple des mises en page pour les configurations décrites par un sélecteur de qualifier, vous devez créer un nouveau sous-dossier dans le dossier res en utilisant ce qualificateur, par exemple, layout-qualifier pour les mises en page.

Remarque

Android sélectionne automatiquement le bon fichier en fonction de la configuration courante.

2 - Les principaux qualificateurs de ressource

2-1 - La densité

Le sujet est traité dans la section 3.1, « Pourquoi gérer des densités d'écran différentes ? ».

2-2 - L'orientation

Supposons, par exemple, que vous souhaitiez utiliser une mise en page spéciale pour votre activité en mode paysage(2) et que le fichier de mise en page s'appelle activity_main.xml. Dans ce cas, vous créez le dossier res/layout-land et placez le nouveau fichier de mise en page activity_main.xml dans ce dossier.

2-3 - Les chaînes de caractères et les traductions

Vous pouvez également utiliser des sélecteurs de ressource pour votre dossier values qui contient, par exemple, les valeurs de vos chaînes de caractères. Utilisez le dossier values-qualifier pour cela.

Par exemple, pour fournir des ressources texte en anglais et allemand, utilisez les dossiers values-en et values-de.

2-4 - Les qualificateurs de version Android

Une sélection typique que vous utilisez dans votre application est celle basée sur la version d'Android, qui repose sur le qualificateur -v[minimum API level]. Ainsi, vous pouvez fournir différents styles et thèmes en fonction de la révision de l'API Android.

Un exemple de l'utilisation de ce qualificateur est la définition du style sur base de la version Android.

2-5 - Les qualificateurs associés à la largeur et la hauteur

Une autre sélection commune est celle de la plus petite largeur disponible ou de la largeur disponible. La plus petite largeur disponible est la plus petite hauteur d'écran disponible et la largeur disponible est la largeur réelle basée sur l'orientation de l'appareil.

La sélection de la largeur peut, par exemple, être utilisée pour fournir différentes mises en page en fonction de la largeur de l'appareil. Cette sélection est basée sur le qualificateur -sw[Number]dp (la plus petite) ou -w[Number]dp, où [Number] représente le nombre de pixels indépendants du périphérique. Par exemple, une tablette de 7 pouces a généralement au moins 600dp et vous pourriez fournir des mises en page pour celle-ci par le sélecteur res/layout-sw600dp/.

2-6 - Autres qualificateurs de ressource

Les autres qualificateurs de ressource sont décrits sur la page web suivante : http://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources.

3 - La densité de l'écran

3-1 - Pourquoi gérer des densités d'écran différentes ?

Les écrans des appareils Android ont des résolutions et densités des pixels différentes.

Dans le cas d'une densité différente, la même longueur d'un composant de l'interface utilisateur contient un nombre différent de pixels.

Par exemple, si vous spécifiez directement les pixels, vous pouvez obtenir le résultat suivant sur un périphérique avec un nombre relativement faible de pixels.

L'utilisation du même nombre de pixels sur un dispositif avec plus de pixels pourrait conduire à une interface graphique inutilisable.

Pour cette raison, vous devez fournir des ressources graphiques, par exemple les icônes du lanceur et de la barre d'action, dans des résolutions différentes. Cela peut se faire en utilisant des qualificateurs de ressource basés sur la densité des pixels.

3-2 - Utiliser la densité comme qualificateur de ressource

Vous pouvez utiliser la densité comme qualificateur de ressource. Android prend en charge les sélections suivantes. Le minimum est de 160 points par pouce (dpi)(3). Si par exemple l'appareil Android dispose de 320 dpi, le Drawable du drawable-hdpi est sélectionné.

Tableau 1. Les sélecteurs de densité

Sélecteur de densité

Valeur

ldpi

160 dpi x 0.75

mdpi

160 dpi

hdip

1.5 x 160 dpi = 240 dpi

xhdpi

2 x 160 dpi = 320 dpi

xxhdpi

3 x 160 dpi = 480 dpi

xxxhdpi

4 x 160 dpi = 640 dpi

3-3 - La taille des icônes

Vous devez fournir les icônes du lanceur, de la barre d'action et de la barre de notification dans les cinq tailles importantes.

Tableau 2. Tailles des icônes Android

Icônes

mdpi

hdpi

xhdpi

xxhdpi

xxxhdpi

Lanceur

48 px

72 px

96 px

144 px

192 px

Barre d'action

32 px

48 px

64 px

96 px

128 px

Notification

24 px

36 px

48 px

72 px

96 px

L'icône de lancement devrait être fournie également en 512x512 px pour l'application publiée dans Google Play.

4 - Définir la taille des composants de l'IU dans les fichiers de mise en page

4-1 - Dimensions fixes ou relatives

Android vous permet de définir la taille des composants de l'interface utilisateur dans les fichiers de mise en page par des dimensions fixes ou relatives. Si vous utilisez les dimensions fixes, par exemple les pixels, l'interface utilisateur peut sembler bien sur un certain dispositif, mais le bouton pourrait être trop petit sur d'autres appareils avec une densité de pixels plus élevée.

Il est recommandé de toujours utiliser des dimensions relatives pour votre application Android.

4-2 - Utiliser dp comme dimension relative Using dp as relative dimension

L'unité de mesure qui devrait être utilisée est dp.

dp est l'abréviation pour dip (device independent pixel).

Un dp représente un pixel sur un appareil Android avec 160dpi (points par pouce). Il s'agit de la densité du premier appareil Android disponible (G1). Celle-ci est également nommée mdpi (medium(4) dots per inch).

Si vous spécifiez la taille en dp, Android adapte automatiquement votre composant de l'interface utilisateur en fonction de l'appareil.

Sur un dispositif mdpi (à densité moyenne), un dp est identique à un pixel. Un dp sur un appareil ldpi (à faible densité) est plus petit (environ 120dip), sur un dispositif hdpi (à haute densité) est plus grand (environ 240dpi). Donc un dp occupe approximativement le même espace physique sur chaque appareil.

Vous pouvez utiliser dp dans vos ressources, par exemple dans les fichiers de mise en page.

4-3 - Utiliser sp pour mettre à l'échelle le texte dans les préférences utilisateur

Si l'appareil doit adapter le texte en fonction des paramètres de préférences de l'utilisateur, choisissez l'unité de mesure sp. Elle est similaire à dp, mais il est également possible de la mettre à l'échelle dans les préférences de l'utilisateur.

Si les utilisateurs choisissent d'augmenter la taille de la police dans les paramètres, les vues qui utilisent sp sont adaptées en conséquence.

5 - Définir la taille des composants de l'IU dans le code source

L'API Android vous oblige souvent à spécifier une taille en pixels et n'accepte pas dp comme unité de mesure. Dans ce cas, vous devez transformer votre dp souhaité en pixels réels.

Vous pouvez utiliser la méthode suivante pour calculer la quantité de pixels nécessaire pour une dimension spécifiée en dp.

public int convertToPixelFromDp(int dpInput) {
// obtenir l'échelle de la densité de l'écran
final float scale = getResources().getDisplayMetrics().density;
// convertir les dp en pixels, sur la base de l'échelle de densité
return (int) (dpInput * scale + 0.5f);
}

La densité pour l'appareil actuel peut être interrogée avec l'appel de méthode suivant.

getResources().getConfiguration().densityDpi;

6 - Fragments

Les fragments offrent un excellent support pour multiples configurations d'écran. Voir le tutoriel sur les Fragments Android pour plus de détails (Tutoriel Developpez : « vogella - Utiliser les fragments sous Android »).

7 - Liens

7-1 - Code source

- Codes source d'exemple

7-2 - Ressources soutenant differentes tailles d'écran Resources Supporting different screen sizes

- Providing Resources

8 - Remerciements

Vous pouvez retrouver l'article original à l'adresse Android resource selectors - Tutorial. Nous remercions Lars Vogel qui nous a aimablement autorisés à traduire et héberger ses articles. Nous remercions aussi Mishulyna pour sa traduction, Feanorin pour sa relecture technique ainsi que ced pour sa relecture orthographique.

(1)(NDT) « pixel indépendant du périphérique ».

(2)(NDT) En anglais « landscape ».

(3)(NDT) En anglais « dots per inch ».

(4)(NDT) « moyen ».