Une bonne pratique de programmation consiste à externaliser le maximum d’éléments dans des fichiers externes afin de les gérer indépendamment, faciliter l’internationalisation, le changement de style de votre application, son adaptation à différentes tailles et résolutions d’écran.
Toutes les ressources d’une application Android (chaines de caractères, images, couleurs, images, layout…) se situent dans des sous-répertoire du répertoire res/ voir http://javamind-fr.blogspot.fr/2012/05/structuration-des-projets-android-4x.html
Pour chaque ressource on définit un fichier par défaut mais on peut également créer d’autres fichiers en fonction d’un critère (orientation de l’écran, taille, langue…). Par exemple vous pouvez définir des dispositions d’écrans (fichiers, layout) différents en fonction du device.
res/values/string.xml contient les chaines de caractères par défaut
res/values-fr/strings.xml les mêmes chaines en français
…
Vous pouvez cumuler les qualifiers (les critères)
res/drawable-small-land-stylus/
res/drawable-ja/
res/drawable/
Mais dans ce cas là le système devra faire un choix selon un ordre de priorité défini entre les différents qualifiers (code pays MCC, langage, plus petite taille, largeur, hauteur, taille de l’écran, aspect, orientation,… ). Pour plus d’information je vous oriente vers la documentation de google http://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources
Faites attention de ne pas abuser des qualifiers car plus votre application en contient, plus vous devrez redoubler d’effort pour tester toutes les combinaisons possibles. L’inverse est également vrai, car une application qui s’adapte mal à l’appareil d’un utilisateur sera mal perçue.
Accéder à une ressource
L’outil AAPT (Android Asset Packaging Tool) gère l’ensemble des ressources de votre application et les compile dans une classe R. Vous pouvez donc rapidement dans votre code source accéder à n’importe quelle ressource déclarée dans les fichiers XML placés dans les sous répertoires du répertoire res.
Par exemple dans une activité si vous voulez récupérer un TextView déclarer dans un de vos fichiers layout vous pouvez écrire
TextView scoreLocalTextView = (TextView) findViewById(R.id.scoreLocalTextView);
Vous pouvez (et je dirai même vous devriez) également utiliser ces resources dans vos fichiers XML. Par exemple
@style/mainTeamStyle pour faire référence à un style
@string/team_local pour faire référence à une chaîne de caractère
Pour résumer une ressource est accessible, en la déclarant de la manière suivante
Dans le code Java [<package_name>.]R.<resource_type>.<resource_name>
Dans les fichiers XML @[<package_name>:]<resource_type>/<resource_name>
Variable
|
Obligatoire
|
Description
|
<resource_type>
|
Oui
|
Type de la ressource
|
<resource_name>
|
Oui
|
Nom de la ressource
|
<package_name>
|
Non
|
Nom du package dans laquelle la resource est déclarée
|
Exemple de fichier de resources
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">FeuilleDeMatch</string>
<style name="mainDispoStyle">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">wrap_content</item>
</style>
<style name="mainScoreStyle" parent="mainDispoStyle">
<item name="android:textSize">30dp</item>
</style>
<color name="white">#ffffff</color>
<array name="sports">
<item>Rugby</item>
<item>Basket</item>
</array>
</resources>
Article précédent / Sommaire / Article suivant
Aucun commentaire:
Enregistrer un commentaire
Remarque : Seul un membre de ce blog est autorisé à enregistrer un commentaire.