Valeurs simples
Il est possible de déclarer des chaînes de caractères, des dimensions, des couleurs, des tableaux (de chaînes de caractères ou d’entiers) comme valeurs simples.
Elles sont déclarées dans des fichiers XML. Ces fichiers XML peuvent contenir tous les types à la fois, mais par convention on sépare les ressources en regroupant les mêmes types dans un fichier au nom explicite comme res/values/strings.xml pour regrouper toutes les chaînes de caractères.
Voici un exemple de fichier (dans vos projets, veillez à bien séparer chaque type de ressources).
Code 2-6 : Définition d’un fichier de ressources contenant plusieurs types
Ne pas oublier la déclaration XML dans vos fichiers et veillez impérativement à mettre les balises qui décrivent les ressources à l’intérieur de l’élément racine
<resources> .
Couleurs
Une couleur définit une valeur RVB (rouge, vert et bleu) et une transparence. Cette couleur peut être utilisée à de multiples endroits comme pour définir la couleur d’un
<?xml version="1.0" encoding="utf-8"?>
<EditText id="text"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="@android:string/unknownName" />
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="nom_application">Suivi des SMS</string>
<color name="couleur_des_boutons">#FFAABBCC</color>
<array name="tableau_entiers">
<item>1765</item>
<item>3</item>
</array>
</resources>
Développer avec Android 54
texte. Il existe différents formats dont la syntaxe globale est la suivante : <color
name=nom_couleur>valeur_de_la_couleur</color>
Les différents formats d’une couleur sont les suivants :
• #RGB (Rouge-Vert-Bleu/valeur hexadécimale sur 1 caractère [0,16])
• #ARGB (Alpha (transparence)-Rouge-Vert-Bleu)
• #RRGGBB (Rouge-Vert-Bleu/valeur hexadécimale sur 2 caractères [0,255])
• #AARRGGBB
Exemple de déclaration de chaîne de caractères au format AARRGGBB (valeur pour la transparence puis pour les composantes de rouge, vert et bleu) :
Code 2-7 : Définition d’un fichier de ressources de couleurs
Utilisation des couleurs (exemple avec la déclaration de la couleur bleu_transparent) :
• Java : R.color.bleu_transparent
• XML : @[package:]color/bleu_transparent
Chaînes de caractères et texte formaté
Les chaînes de caractères avec un format optionnel peuvent être utilisées comme res-sources.
Leur syntaxe est la suivante : <string name=nom_chaine>valeur_de_la_chaine</string>. Ce format assez simple vous permet d’utiliser trois balises HTML standard <b>
(gras), <i> (italique) et <u> (souligné) :
À noter que si vous voulez utiliser des guillemets ou des apostrophes, vous devez les échapper en les faisant précéder du caractère slash ('\') :
Quelques exemples de déclaration de chaînes de caractères : Code 2-8 : Définition d’un fichier de ressources de chaînes de caractères
<resources>
<color name="bleu_transparent">#50ff00FF</color>
</resources>
<string name="ex1">Un texte <b>mis en forme</b></string>
<string name="ex2">Voici l\’application de ce conseil</string>
<resources>
<string name="app_name">Exemple Android Eyrolles</string>
<string name="menu_principal">Menu Principal</string>
</resources>
Création d’applications et découverte des activités CHAPITRE 2 55
Utilisation des chaînes de caractères :
• Java : R.string.le_nom
• XML : @[package:]string/un_nom
Unités de mesure (« dimensions »)
Les dimensions sont la plupart du temps référencées dans les styles et les mises en page. Elles peuvent servir de constantes entre différents éléments d’écrans. Voici les unités prises en charge par Android : px (pixels), in (pouces), mm (millimètres), pt (points), dp (« density-independant » pixel), sp (« scale-independant pixel »). Vous trouverez plus de détail sur ces unités dans le chapitre 4 sur les interfaces utilisateur.
Voici quelques exemples :
Code 2-9 : Définition d’un fichier de ressources de dimensions
Utilisation des dimensions :
• Java : R.dimen.un_nom
• XML : @[package:]dimen/un_nom
Images
Fichiers bitmap
Android prend en charge les fichiers bitmap sous différents formats avec une préfé-rence bien affirmée dans la documentation pour le format PNG. Il est cependant possible d’utiliser le format JPEG ou le format GIF (qui est déconseillé par la docu-mentation).
Utilisation des images de type bitmap :
• Java : R.drawable.fichier_bitmap
• XML : @[package:]drawable/fichier_bitmap
<resources>
<dimen name="taille_texte">5sp</dimen>
</resources>
Resources.getDimen(R.dimen.taille_texte);
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/taille_texte"/>
Développer avec Android 56
À partir d’Android 1.6, le kit de développement propose des possibilités étendues pour la gestion des résolutions d’écran hétérogènes dues à des appareils Android équipés de matériels aux tailles et caractéristiques différentes. Pour ce faire, la plate-forme classe les tailles d’écran et leurs résolutions en trois catégories.
Concernant les tailles d’écran, le fichier de configuration dispose d’une balise
<supports-screens> qui grâce aux attributs android:smallScreens,
android:normalScreens et android:largeScreens permet de spécifier quelle(s) taille(s) d’écran votre application supporte.
Concernant les résolutions, chacune de ces catégories (low, medium, high) dispose d’un répertoire où enregistrer vos ressources.
Vous aurez également certainement remarqué que le premier répertoire de la capture d’écran est composé d’un format de langue. On peut en effet également personnaliser les ressources graphiques en proposant des images différentes en fonction de la langue choisie sur l’appareil. Pour plus d’informations, l’internationalisation des applications est traitée au chapitre 5 sur la création d’interfaces utilisateur avancées.
PRÉCISIONS Les fichiers dits bitmaps
Les fichiers dits bitmaps sont des formats d’images qui ont en commun une organisation des données qui code l’image sous forme de champs de bits. Les formats dits vectoriels sont un exemple d’autres possibi-lités de représentation et de stockage des données.
Les formats JPEG, GIF ou PNG sont plus rarement classés dans cette catégorie puisqu’ils utilisent des méthodes de compression. C’est le choix fait dans la documentation Android, nous le suivons ! Le format éponyme BMP (pour BitMaP), que l’on doit à Microsoft, n’en est qu’un cas particulier.
Figure 2–4
Exemple de projet avec des ressources spécialisées
Le guide de développement Android propose un dossier complet sur le développement d’applications compatibles avec des écrans différents :
B http://developer.android.com/guide/practices/screens_support.html
Création d’applications et découverte des activités CHAPITRE 2 57
Images étirables
Les images étirables, dites Nine-Patch, sont des images PNG dans lesquelles on peut définir des portions étirables que le système redimensionnera pour obtenir la taille souhaitée. Leur utilisation :
• Java : R.drawable.fichier
• XML : @[package:]drawable.fichier
Elles permettent de réaliser des interfaces graphiques très travaillées.
Animations
La déclaration d’animations est plus compliquée, mais le résultat n’est pas décevant avec des possibilités de rotation, de fondu, de translation et de changements de taille.
Les animations sont placées dans un ou plusieurs fichiers dans le répertoire res/
anim. Voici les quatre types d’animations proposées :
• <alpha>: permet de faire un fondu ;
• <scale>: définit un facteur d’échelle de départ et d’arrivée en X et Y ;
• <translate>: permet de déplacer l’élément ;
• <rotate>: propose une rotation avec un point pivot et un angle en degrés.
Android propose également des attributs permettant de nombreux réglages comme la durée, la répétition, etc.
Voici un exemple d’animation de type fondu avec la transparence qui passe de 0 à 1 : Code 2-10 : Exemple d’une ressource d’animation
Les animations sont traitées en détail dans le chapitre sur les interfaces graphiques avancées.
Autres ressources
Toutes les ressources n’ont pas été détaillées dans ce chapitre. Voici celles qui seront développées à l’occasion des chapitres de ce livre :
• les menus : les menus de l’application peuvent être définis comme ressources XML.
Ce point sera abordé dans le chapitre portant sur la création d’interfaces graphiques ;
<?xml version="1.0" encoding="utf-8"?>
...
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="100" />
...
Développer avec Android 58
• la mise en page (layouts ou encore gabarits) : les mises en pages définies dans les fichiers de ressources XML permettent de découper la couche présentation en évitant de construire la mise en page d’une interface graphique dans le code. Ce point sera également abordé dans le chapitre qui vous guidera lors de la création d’interfaces graphique.