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
.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. Soutenez les tutoriels gratuits vogella▲
Ce tutoriel est libre sous la licence CC BY-NC-SA 3.0 DE. Son code source est distribué sous la Licence publique Eclipse. Voir la page vogella License pour plus de détails sur les conditions de réutilisation.
La rédaction et la mise à jour de ces tutoriels nécessitent beaucoup de travail. Si ce service gratuit de la communauté vous a été utile, vous pouvez soutenir la cause en faisant un don, ainsi qu'en signalant les fautes de frappe et de contenu.
7-1. Merci▲
Si cet article vous a été utile, vous pouvez faire un don à Lars Vogel sur la page de l'article original.
7-2. Questions et discussions▲
Si vous trouvez des erreurs dans ce tutoriel, s'il vous plaît informez-moi (voir en haut de la page). Veuillez noter que, en raison du volume élevé de commentaires que je reçois, je ne peux pas répondre à des questions concernant votre application. Assurez-vous d'avoir lu la FAQ vogella, peut-être la réponse s'y trouve déjà.
8. Liens▲
8-1. Code source▲
8-2. Ressources soutenant differentes tailles d'écran Resources Supporting different screen sizes▲
8-3. Ressources vogella▲
- vogella Training : cours Android et Eclipse par l'équipe vogella.
- Tutoriel Android : introduction à la programmation Android (tutoriel Developpez : « Tutoriel sur le développement Android »).
- Tutoriel GWT : programmation en Java et compilation en JavaScript et HTML.
- Tutoriel Eclipse RCP : création d'applications natives en Java.
- Tutoriel JUnit : testez votre application.
- Tutoriel Git : mettez vos fichiers dans un système distribué de gestion de versions.
9. Remerciements Developpez▲
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.
Les commentaires et les suggestions d'amélioration sont les bienvenus, alors, après votre lecture, n'hésitez pas. Commentez
Les commentaires et les suggestions d'amélioration sont les bienvenus, alors, après votre lecture, n'hésitez pas.
Commentez .