Travaux pratique avec correction sur les composants Android
Travaux pratique avec correction sur les composants Android
...
TAF-1 : Créer un nouveau projet intitulé Conversion, qui contient le package isi.conversion. Créer les éléments nécessaires pour que l’interface soit comme la figure suivante :
- Boutons, boutons radios et cases à cocher
Dans le TP précédent, nous avons vu comment gérer le comportement des boutons. Ce n’est pas la seule manière.
- 1. Associer un comportement à un bouton
- Créer une méthode dans le code Java de l’activité qui définit le comportement du bouton. On l’appellera public void auClicMethode(View v){…}
Cette méthode doit obligatoirement être publique, retourner void et avoir un paramètre de type android.view.View.
- Créer un bouton dans le fichier layout en utilisant la partie graphique.
TP3 : Composants Android
- Modifier son identifiant et son texte à votre guise
Remarque : Il vous est possible de modifier ces informations graphiquement. Pour cela, ouvrir la partie graphique du fichier layout, clic-droit sur l’élément à configurer, et choisir Edit Text, Edit ID…
- Dans le code xml de votre bouton, ajouter l’attribut :
android:onClick = "@string/auClic"
- Créer dans le fichier strings.xml un nouveau string dont le nom est auClic et la valeur est auClicMethode (qui est le nom de la méthode que vous avez créé dans 1. )
TAF-2 : Créer une méthode appelée convertir et l’associer au bouton Convertir de votre interface.
- 2. Gérer les boutons radios
Un bouton radio est un bouton à deux états qui peut être soit coché (checked) ou décoché (unchecked). Les boutons radios sont en général utilisés dans un groupe RadioGroup. Au sein d’un même groupe, un seul bouton radio peut être coché.
Pour gérer l’état d’un bouton radio, il faut suivre les étapes suivantes :
- Créer un attribut de type RadioButton dans votre activité (par exemple radio1).
- L’associer au bouton radio approprié de votre interface en utilisant la méthode findViewById.
- Pour tester l’état de votre bouton radio, appeler la méthode isChecked(). Par exemple :
if (radio1.isChecked() ){
//traitement
}
TP3 : Composants Android
- 3. Gérer les cases à cocher
Tout comme les boutons radio, les cases à cocher ont deux états : coché ou décoché. Cependant, on peut avoir plusieurs cases qui sont cochées en même temps, et elle sont la plupart du temps indépendantes.
Pour gérer l’état d’une case à cocher, il faut suivre les étapes suivantes :
- Créer un attribut de type CheckBox dans votre activité (par exemple check1).
- L’associer à la case à cocher appropriée de votre interface en utilisant la méthode findViewById.
- Pour tester l’état de votre case à cocher, appeler la méthode isChecked(). Par exemple :
if (check1.isChecked() ){
//traitement
}
- Pour modifier l’état de la case à cocher, utiliser la méthode setChecked(boolean etat). Par exemple :
check1.setChecked(false) ; //pour décocher la case
check1.setChecked(true) ; //pour cocher la case
TAF-3 :
- Créer deux méthodes : dinarToEuro et euroToDinar, qui prennent de convertir une valeur en entrée :
private float dinarsToEuro(float valeurDinar) {
return (float) (valeurDinar * 1.9919);
}
private float euroToDinar(float valeurEuro) {
return (float) (valeurEuro * 0.5020);
}
- Implémenter la méthode convertir pour qu’elle fasse la conversion nécessaire, selon le bouton radio qui est coché.
Mettre le résultat dans le champs de texte Resultat.
Indication : La valeur lue dans le champs de saisie (ici appelé edt) doit être convertie en float pour être manipulée. Pour cela, utiliser le code suivant :
EditText edt = (EditText) findViewById(R.id.edit_float);
float number = Float.valueOf(edt.getText().toString());
D’autre part, pour extraire la chaîne de caractères associée à une variable float (appelée ici floatVar), utiliser le code suivant :
String s = String.valueOf(floatVar) ;
TP3 : Composants Android
- Menus
Sur Android, les menus permettent d’ajouter des fonctionnalités à une application en fournissant des opérations supplémentaires, initialement cachées à l’utilisateur.
Il existe deux types de menus :
- Un menu d’options : déclenché par le bouton matériel Menu sur le téléphone.
- Un menu contextuel : déclenché par un évènement sur un élément de l’interface, par exemple un long clic.
Ces deux types de menus peuvent contenir :
- Du texte
- Des icônes
- Des boutons radios
- Des cases à cocher
- Des sous-menus
- Des raccourcis…
- 1. Menu contextuel
Pour définir un menu contextuel, qui sera déclenché suite à un long clic sur un élément (que j’appelle ici element :
il peut être un bouton, un textView, ou même le layout en entier) :
- Créer un attribut pour l’élément auquel on veut ajouter un menu contextuel, et l’associer à l’élément graphique avec la méthode findViewById(…).
- Ajouter un écouteur pour le long clic, de la même manière que nous avons ajouté un écouteur pour le clic dans le TP précédent. Cet écouteur( Listener), va ordonner l’affichage du menu contextuel quand on fait un long clic sur element :
element.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
v.showContextMenu();
return false;
}});
element.setOnCreateContextMenuListener (this) ;
- Indiquer le comportement de ce menu. Pour cela, générer la méthode onCreateContextMenu dans votre activité. Elle est appelée quand un menu contextuel va être affiché.
- Dans le corps de cette méthode, on peut ajouter des menus. Pour cela, utiliser la méthode :
TP3 : Composants Android
menu.add(groupID, itemID, ordre, "nom du menu") ;
Cette méthode permet de créer un nouveau menu. Les paramètres nécessaires sont les suivants :
- groupID : identifiant du groupe. Il est possible de regrouper les éléments, mais dans notre cas, on n’en a pas besoin, on lui donne donc la valeur 0 ;
- itemID : identifiant de ce menu. Il nous sera utilise pour identifier ce menu parmi les autres. On doit donner un identifiant différent à chaque menu (1, 2, 3… par exemple).
- ordre : associer un ordre d’affichage au menu. On donnera toujours la valeur 0.
- Nom du menu : chaîne qui représente le titre du menu.
- Nous devons dire quel est le comportement à faire quand on clique sur cet élément du menu. Pour cela, générer la méthode :
public boolean onContextItemSelected(MenuItem item){…}
Dans le corps de cette méthode, indiquer le comportement à adopter, si on clique sur le menu 1 ou 2 :
switch(item.getItemId()){
case 1:
//traitement 1
case 2:
//traitement 2
}
TAF-4 : Créer un menu contextuel sur les deux boutons radios. Il doit contenir deux menus :
- « Taux dinar -> euro » : affiche dans un Toast le taux de conversion du dinar vers l’euro.
- « Taux euro -> dinar » : affiche dans un Toast le taux de conversion de l’euro vers le dinar.
- 2. Menu d’options
Le menu d’options se gère presque de la même manière qu’un menu d’options, mais sans la gestion de l’élément graphique auquel est associé le menu contextuel.
- Générer la méthode onCreateOptionsMenu dans votre activité. Cette méthode permet de déterminer le comportement de l’application quand le bouton Menu de votre téléphone est appuyé. Elle prend comme paramètre un objet de type Menu : c’est le menu que vous allez manipuler.
- Dans le corps de la méthode onCreateOptionsMenu (avant l’instruction return), ajouter les différents menus dont vous avez besoin.
- Générer la méthode onOptionsItemSelected pour définir le comportement au clic d’un menu.