Autres ressources
D’autres ressources sont les ressources qui ciblent un appareil ou une configuration d’exécution spécifique, comme la langue actuelle, la taille d’écran particulière ou la densité de pixels. Si Android peut correspondre à une ressource qui est plus spécifique pour un appareil ou une configuration particulière que la ressource par défaut, cette ressource sera utilisée à la place. S’il ne trouve pas une autre ressource qui correspond à la configuration actuelle, les ressources par défaut sont chargées. La façon dont Android détermine quelles ressources seront utilisées par une application sera traitée plus en détail ci-dessous, dans la section Emplacement des ressources
Les autres ressources sont organisées en tant que sous-répertoire dans le dossier Resources en fonction du type de ressource, tout comme les ressources par défaut. Le nom du sous-répertoire de ressource secondaire se présente sous la forme :QualificateurResourceType-
Qualificateur est un nom qui identifie une configuration d’appareil spécifique. Il peut y avoir plusieurs qualificateurs dans un nom, chacun d’eux séparé par un tiret. Par exemple, la capture d’écran ci-dessous montre un projet simple qui a d’autres ressources pour diverses configurations telles que les paramètres régionaux, la densité de l’écran, la taille de l’écran et l’orientation :
Les règles suivantes s’appliquent lors de l’ajout de qualificateurs à un type de ressource :
Il peut y avoir plusieurs qualificateurs, chaque qualificateur séparé par un tiret.
Les qualificateurs peuvent être spécifiés une seule fois.
Les qualificateurs doivent être dans l’ordre dans lequel ils apparaissent dans le tableau ci-dessous.
Les qualificateurs possibles sont répertoriés ci-dessous pour référence :
MCC et MNC : l’indicatif de pays mobile (MCC) et éventuellement le code de réseau mobile (MNC). Le carte SIM fournit le MCC, tandis que le réseau auquel l’appareil est connecté fournit le MNC. Bien qu’il soit possible de cibler des paramètres régionaux à l’aide du code de pays mobile, l’approche recommandée consiste à utiliser le qualificateur de langue spécifié ci-dessous. Par exemple, pour cibler des ressources vers l’Allemagne, le qualificateur est
mcc262
. Pour cibler des ressources pour T-Mobile aux États-Unis, le qualificateur estmcc310-mnc026
. Pour obtenir la liste complète des codes de pays mobiles et des codes de réseau mobile, consultez http://mcc-mnc.com/.Langue : code de langue ISO 639-1 à deux lettres et éventuellement suivi du code régional ISO-3166-alpha-2 à deux lettres. Si les deux qualificateurs sont fournis, ils sont séparés par un
-r
. Par exemple, pour cibler les paramètres régionaux Français, le qualificateur defr
est utilisé. Pour cibler French-Canadian paramètres régionaux, lefr-rCA
est utilisé. Pour obtenir la liste complète des codes de langue et des codes régionaux, consultez Codes for the Representation of Names Of Languages et Country Names and Country Elements.Largeur la plus petite : spécifie la plus petite largeur d’écran sur laquelle l’application est censée s’exécuter. Abordé plus en détail dans Création de ressources pour différents écrans. Disponible au niveau d’API 13 (Android 3.2) et versions ultérieures. Par exemple, le qualificateur
sw320dp
est utilisé pour cibler les appareils dont la hauteur et la largeur sont d’au moins 320dp.Largeur disponible : largeur minimale de l’écran au format wNdp, où N est la largeur en pixels indépendants de la densité. Cette valeur peut changer à mesure que l’utilisateur fait pivoter l’appareil. Abordé plus en détail dans Création de ressources pour différents écrans. Disponible au niveau d’API 13 (Android 3.2) et versions ultérieures. Exemple : le qualificateur w720dp est utilisé pour cibler les appareils dont la largeur est minimale de 720dp.
Hauteur disponible : hauteur minimale de l’écran au format hNdp, où N est la hauteur en dp. Cette valeur peut changer à mesure que l’utilisateur fait pivoter l’appareil. Abordé plus en détail dans Création de ressources pour différents écrans. Disponible au niveau d’API 13 (Android 3.2) et versions ultérieures. Par exemple, le qualificateur h720dp est utilisé pour cibler les appareils dont la hauteur est minimale de 720dp
Taille de l’écran : ce qualificateur est une généralisation de la taille d’écran pour laquelle ces ressources sont destinées. Elle est traitée plus en détail dans Création de ressources pour divers écrans. Les valeurs possibles sont
small
,normal
,large
etxlarge
. Ajouté au niveau d’API 9 (Android 2.3/Android 2.3.1/Android 2.3.2)Aspect de l’écran : cela est basé sur les proportions, et non sur l’orientation de l’écran. Un écran long est plus large. Ajouté au niveau d’API 4 (Android 1.6). Les valeurs possibles sont longues et notlong.
Orientation de l’écran : orientation de l’écran portrait ou paysage. Cela peut changer pendant la durée de vie d’une application. Les valeurs possibles sont
port
etland
.Mode d’ancrage : pour les appareils d’une station d’accueil de voiture ou d’une station d’accueil. Ajouté au niveau d’API 8 (Android 2.2.x). Les valeurs possibles sont
car
etdesk
.Mode Nuit : indique si l’application est en cours d’exécution de nuit ou de jour. Cela peut changer pendant la durée de vie d’une application et est destiné à permettre aux développeurs d’utiliser des versions plus sombres d’une interface la nuit. Ajouté au niveau d’API 8 (Android 2.2.x). Les valeurs possibles sont
night
etnotnight
.Densité de pixels d’écran (ppp) : nombre de pixels dans une zone donnée sur l’écran physique. Généralement exprimé sous forme de points par pouce (ppp). Les valeurs possibles sont les suivantes :
ldpi
– Écrans à faible densité.mdpi
– Écrans à densité moyennehdpi
– Écrans à haute densitéxhdpi
– Écrans à très haute densiténodpi
– Ressources qui ne doivent pas être mises à l’échelletvdpi
– Introduit dans le niveau d’API 13 (Android 3.2) pour les écrans entre mdpi et hdpi.
Type d’écran tactile : spécifie le type d’écran tactile d’un appareil. Les valeurs possibles sont
notouch
(pas d’écran tactile),stylus
(un écran tactile résistif adapté à un stylet) etfinger
(un écran tactile).Disponibilité du clavier : spécifie le type de clavier disponible. Cela peut changer pendant la durée de vie d’une application, par exemple lorsqu’un utilisateur ouvre un clavier matériel. Les valeurs possibles sont les suivantes :
keysexposed
: un clavier est disponible sur l’appareil. Si aucun clavier logiciel n’est activé, il est utilisé uniquement lorsque le clavier matériel est ouvert.keyshidden
: l’appareil dispose d’un clavier matériel, mais il est masqué et aucun clavier logiciel n’est activé.keyssoft
: un clavier logiciel est activé sur l’appareil.
Méthode d’entrée de texte primaire : permet de spécifier les types de clés matérielles disponibles pour l’entrée. Les valeurs possibles sont les suivantes :
nokeys
: il n’existe aucune clé matérielle pour l’entrée.qwerty
: un clavier qwerty est disponible.12key
– Il existe un clavier matériel à 12 touches
Disponibilité de la clé de navigation : pour les cas où la navigation 5 voies ou d-pad (pavé directionnel) est disponible. Cela peut changer pendant la durée de vie de votre application. Les valeurs possibles sont les suivantes :
navexposed
: les clés de navigation sont disponibles pour l’utilisateurnavhidden
: les touches de navigation ne sont pas disponibles.
Méthode de navigation non tactile principale : type de navigation disponible sur l’appareil. Les valeurs possibles sont les suivantes :
nonav
– la seule fonctionnalité de navigation disponible est l’écran tactiledpad
: un d-pad (directional-pad) est disponible pour la navigationtrackball
: l’appareil dispose d’une trackball pour la navigationwheel
– le scénario peu courant où il y a une ou plusieurs roues directionnelles disponibles
Version de la plateforme (niveau de l’API) : niveau d’API pris en charge par l’appareil au format vN, où N est le niveau d’API ciblé. Par exemple, la version 11 cible un appareil de niveau API 11 (Android 3.0).
Pour plus d’informations sur les qualificateurs de ressources, consultez Fournir des ressources sur le site web des développeurs Android.
Comment Android détermine les ressources à utiliser
Il est très possible et probable qu’une application Android contienne de nombreuses ressources. Il est important de comprendre comment Android sélectionne les ressources d’une application lorsqu’elle s’exécute sur un appareil.
Android détermine la base de ressources en itérant sur le test de règles suivant :
Éliminez les qualificateurs contradictoires : par exemple, si l’orientation de l’appareil est portrait, tous les répertoires de ressources de paysage sont rejetés.
Ignorer les qualificateurs non pris en charge : tous les qualificateurs ne sont pas disponibles pour tous les niveaux d’API. Si un répertoire de ressources contient un qualificateur qui n’est pas pris en charge par l’appareil, ce répertoire de ressources est ignoré.
Identifiez le qualificateur de priorité la plus élevée suivant : en vous référant au tableau ci-dessus, sélectionnez le qualificateur de priorité la plus élevée suivant (de haut en bas).
Conservez les répertoires de ressources pour qualificateur : s’il existe des répertoires de ressources qui correspondent au qualificateur au tableau ci-dessus, sélectionnez le qualificateur de priorité la plus élevée suivant (de haut en bas).
Ces règles sont également illustrées dans l’organigramme suivant :
Lorsque le système recherche des ressources spécifiques à la densité et ne les trouve pas, il tente de localiser d’autres ressources spécifiques à la densité et de les mettre à l’échelle. Android n’utilise pas nécessairement les ressources par défaut. Par exemple, lorsque vous recherchez une ressource à faible densité et qu’elle n’est pas disponible, Android peut sélectionner la version haute densité de la ressource sur les ressources par défaut ou à densité moyenne. Cela est dû au fait que la ressource à haute densité peut être réduite d’un facteur de 0,5, ce qui entraîne moins de problèmes de visibilité que la mise à l’échelle d’une ressource de densité moyenne qui nécessiterait un facteur de 0,75.
Prenons l’exemple d’une application qui a les répertoires de ressources dessinables suivants :
drawable
drawable-en
drawable-fr-rCA
drawable-en-port
drawable-en-notouch-12key
drawable-en-port-ldpi
drawable-port-ldpi
drawable-port-notouch-12key
À présent, l’application est exécutée sur un appareil avec la configuration suivante :
- Paramètres régionaux – en-GB
- Orientation – port
- Densité de l’écran – hdpi
- Type d’écran tactile – notouch
- Méthode d’entrée principale : 12key
Pour commencer, les ressources Français sont éliminées car elles entrent en conflit avec les paramètres régionaux de en-GB
, ce qui nous laisse avec :
drawable
drawable-en
drawable-en-port
drawable-en-notouch-12key
drawable-en-port-ldpi
drawable-port-ldpi
drawable-port-notouch-12key
Ensuite, le premier qualificateur est sélectionné dans le tableau des qualificateurs ci-dessus : MCC et MNC. Aucun répertoire de ressources ne contient ce qualificateur, de sorte que le code MCC/MNC est ignoré.
Le qualificateur suivant est sélectionné, qui est Language. Certaines ressources correspondent au code de langue. Tous les répertoires de ressources qui ne correspondent pas au code de langue de en
sont rejetés, de sorte que la liste des ressources est maintenant :
drawable-en-port
drawable-en-notouch-12key
drawable-en-port-ldpi
Le qualificateur suivant est présent pour l’orientation de l’écran, de sorte que tous les répertoires de ressources qui ne correspondent pas à l’orientation de l’écran de port
sont éliminés :
drawable-en-port
drawable-en-port-ldpi
Ensuite se trouve le qualificateur pour la densité de l’écran, ldpi
, qui entraîne l’exclusion d’un répertoire de ressources supplémentaire :
drawable-en-port-ldpi
À la suite de ce processus, Android utilisera les ressources pouvant être dessinées dans le répertoire drawable-en-port-ldpi
de ressources de l’appareil.
Notes
Les qualificateurs de taille d’écran fournissent une exception à ce processus de sélection. Il est possible pour Android de sélectionner des ressources conçues pour un écran plus petit que celui fourni par l’appareil actuel. Par exemple, un appareil à grand écran peut utiliser les ressources disponibles pour un écran de taille normale. Toutefois, l’inverse n’est pas vrai : le même appareil à grand écran n’utilisera pas les ressources fournies pour un écran xlarge. Si Android ne trouve pas un jeu de ressources qui correspond à une taille d’écran donnée, l’application se bloque.