TP3_android - Yamen EL TOUATI

TP3 – Développement Android Dr. Yamen EL TOUATI www.yameneltouati.com
Layouts, ressources, applications multi‐
langues Objectifs 1. Gérer une application multi‐langues avec des images personnalisées selon la langue choisie 2. Accès aux ressources par xml et Java 3. Manipulation des différents layouts ainsi que leurs attributs par xml et java Notions à retenir Les unités de mesure Les dimensions variables des écrans constituent un défi pour la conception des layouts des applications. Les dimensions suivantes peuvent être considérées •
•
•
•
•
•
px : pixel – problème de proportion de la taille qui dépend de la résolution de l’écran. dp : density independent pixel – la dimension sera adaptée à la résolution de l’écran sp : scaled indepedent pixel – comme dp, mais la taille dépond aussi de la préférence de l’utilisateur in : inch (pouce = 2.54 centimètre) – dépend de la dimension physique de l’écran pt : point (considéré comme 1/72 d’une pouce) mm : millimètre Utilisation des ressources Dans un projets Android, la pluparts des ressources se trouvent sous le dossier res. L’accès à ces ressources est possible en XML et Java Accès aux ressources en xml L’accès à une ressource en XML se fait par la syntaxe suivante : @[pakage:]type/name Exemple : @android:string/cancel @android:color/holo_blue_dark @string/hello_world Dr. Yamen EL TOUATI – Android Page 1
www.yameneltouati.com
Préfixer la ressource par le caractère ‘+’ permet de créer cette ressource. Ceci est réalisé en général lors de la définition d’un identifiant. Exemple : @+id/textView1 En ce qui suit la définition d’un jeu de couleurs (se fait via un fichier xml de nom quelconque mais impérativement sous le dossier values. <?xml version="1.0" encoding="utf‐8"?>
<resources>
<color name="rouge">#FF0000</color>
<color name="vert">#00FF00</color>
</resources>
Il en est de même pour tout autre type de ressources. Toute ressource doit être définie à l’intérieur d’une balise <resources> dans un fichier xml de nom quelconque (de préférence significatif) et sauvegardé dans le dossier « values » ou dans un dossier préfixé par « values ». Avec Eclipse‐ADT la combinaison ctrl+espace à l’intérieur d’une balise ressources permet de défiler les ressources accessibles. L’accès à la ressource définie ci‐haut dans un autre fichier xml peut se faire comme suit : <Button
android:text="@string/act1_btnurl_label" android:textColor="@color/rouge"/>
Accès aux ressources en java L’accès à une ressource en Java se fait via la classe Ressource du package android.content.res La méthode getResources() permet d’initialiser un objet de type Resources par les ressources présente dans le projet courant. Il est possible par la suite d’utiliser les méthodes getXxxx de la classe Resources pour charger une ressource particulère. Exemple : import android.content.res.Resources; …. Resources ressource=this.getResources(); String nom=ressource.getString(R.string.act1_btnurl_label); ….. Dans cet Exemple, on charge dans « nom » une chaine de caractère définie par la balise <string> en xml. Les tableaux de chaines de caractère : <string‐array name="tableau_message_act2_indication" >
<item >l\'url à vister est</item>
<item >le(s) critère(s) de recherche : </item>
<item >le numéro à appeler est</item>
Dr. Yamen EL TOUATI – Android Page 2
www.yameneltouati.com
<item >le numéro à composer est</item>
</string‐array>
Accessibles en java par : getStringArray getResources().getStringArray(int ref) Exemple String[] tabMess2 = getResources().getStringArray(R.array.tableau_message_act2_indica
tion);
Les tableaux de chaines de caractère : •
Définie en xml via la balise integer‐array <?xml version="1.0" encoding="utf‐8"?>
<resources>
<integer‐array name="int_table">
<!‐‐ des valeur entières ‐‐>
<item >12</item>
<item >14</item>
</integer‐array>
</resources>
Récupéré en Java avec « getResources(). getIntArray(int ref) » Resources re=getResources();
int [] tab=re.getIntArray(R.array.int_table);
for (int i=0;i<tab.length;i++){
Toast.makeText(this, ""+tab[i], Toast.LENGTH_SHORT).show();
}
Les Images : la ressource @drawable est réservé pour les images : <ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/textView1"
android:src="@drawable/poste_de_travail" />
La méthode permet d’accéder à une image Dr. Yamen EL TOUATI – Android Page 3
www.yameneltouati.com
b=(Button)findViewById(R.id.button1);
Resources r=this.getResources();
BitmapDrawable img= (BitmapDrawable) r.getDrawable( R.drawable.poste_de_travail);
b.setBackgroundDrawable(img);
Application Multi‐langues En ajoutant le qualificatif langue (ar par exemple) à un fichier xml de ressources, ce fichier sera automatiquement créé dans un dossier values suffixé par le qualificatif choisi (values‐ar par exemple). supposons que le contenu du fichier strings.xml est le suivant <?xml version="1.0" encoding="utf‐8"?>
<resources>
<string name="app_name">Exemple26</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
</resources>
On peut ajouter un fichier avec le qualificatif ar comme suit Dr. Yamen EL TOUATI – Android Page 4
www.yameneltouati.com
ossier valuess‐ar Le ficchier sera crééé dans le do
<?x
xml versio
on="1.0" encoding
g="utf‐8"?>
<resources>
<string name="ap
pp_name">
>/>26 ‫مثال‬st
tring>
<string name="ac
ction_set
ttings">/>
>‫االعدادات‬str
ring>
<string name="he
ello_worl
ld">/> ‫مرحبا‬
‫مر‬string>
</r
resources>
Dr. Yaamen EL TOUA
ATI – Android Page 5
www
w.yameneltou
uati.com
Travail à faire Exercice 1 : Reprendre le TP2‐exercice1. Traduire l’application en arabe et en français. Exercice 2 : Réaliser une application d’une seule activité contenant un TextView et une image (ImageView). Le contenu du TextView est le message «Bonjour » ou sa traduction dans une autre langue. Selon la langue choisie dans le système android, l’image doit afficher le drapeau d’un pays parlant nativement cette langue. Exercice 3 : Créer une application contenant un bouton de label (texte du bouton) «Ville » et un RadioGroup permettant de choisir une ville parmi 6 villes de votre choix. Le nom de la ville choisi sera le du bouton. Exercice 4 : Créer une application contenant 4 boutons de labels (texte du bouton) respectifs «Ville1 », «Ville2 », «Ville3 », et «Ville4 ». Ajouter également un Radio Group pour le choix parmi 5 pays. En changeant de choix de pays, les labels des boutons doivent correspondre à des villes du pays choisi. L’action sur un bouton affiche un Toast contenant le non de la ville choisie. Dr. Yamen EL TOUATI – Android Page 6
www.yameneltouati.com