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 ? »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.5
f);
}
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▲
7-2. Ressources soutenant differentes tailles d'écran Resources Supporting different screen sizes▲
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.