TP3 : Composants Android – Programmation Mobile
Introduction
Institut Supérieur d’Informatique, Université de Tunis El Manar
MME. LILIA SFAXI
Licence 3ème – Systèmes Embarqués, Année Universitaire : 2011/2012
Objectifs du TP
Ce TP vise à vous familiariser avec les principaux composants d’Android.
Nous développerons progressivement une application de conversion monétaire.
I. Boutons, Boutons Radios et Cases à Cocher
I.1. Associer un comportement à un bouton
1. Créer une méthode publique dans le code Java de l’activité pour définir le comportement du bouton. Elle doit être nommée public void auClicMethode(View v) et accepter un paramètre de type android.view.View.
2. Ajouter un bouton dans le fichier de layout XML en utilisant l’éditeur graphique.
3. Modifier son identifiant et son texte selon vos besoins. Remarque : Ces modifications peuvent être faites directement dans l’éditeur graphique via les options Edit Text et Edit ID.
4. Dans le code XML du bouton, ajouter l’attribut android:onClick="auClic".
5. Déclarer une ressource auClic dans le fichier strings.xml avec la valeur auClicMethode, correspondant au nom de la méthode créée en 1.
I.2. Gérer les Boutons Radios
Un bouton radio permet de sélectionner un état parmi deux : coché ou décoché. Il est généralement utilisé dans un groupe RadioGroup, où un seul bouton peut être coché à la fois.
Pour gérer son état, suivre ces étapes :
- Déclarer un attribut de type
RadioButtondans l’activité (exemple :radio1). - L’associer au bouton radio de l’interface via
findViewById. - Vérifier son état avec la méthode
isChecked(). Exemple :
if (radio1.isChecked()) {
// Traitement
}
I.3. Gérer les Cases à Cocher
Les cases à cocher ont deux états : coché ou décoché. Contrairement aux boutons radios, plusieurs cases peuvent être cochées simultanément.
Pour les gérer, suivre ces étapes :
- Déclarer un attribut de type
CheckBoxdans l’activité (exemple :check1). - L’associer à la case à cocher de l’interface via
findViewById. - Vérifier son état avec
isChecked(). Exemple :
if (check1.isChecked()) {
// Traitement
}
- Modifier son état avec
setChecked(boolean etat). Exemples :
check1.setChecked(false); // Décocher la case
check1.setChecked(true); // Cocher la case
TAF-3 : Implémentation des Méthodes de Conversion
1. Créer deux méthodes privées : dinarToEuro et euroToDinar, pour convertir une valeur en entrée.
Exemple :
private float dinarToEuro(float valeurDinar) {
return (float) (valeurDinar * 1.9919);
}
private float euroToDinar(float valeurEuro) {
return (float) (valeurEuro * 0.5020);
}
2. Implémenter la méthode convertir pour effectuer la conversion en fonction du bouton radio coché. Afficher le résultat dans le champ de texte Resultat.
Indication : Pour lire une valeur depuis un champ de texte (exemple : edt), utiliser :
EditText edt = (EditText) findViewById(R.id.edit_float);
float number = Float.valueOf(edt.getText().toString());
Pour afficher une valeur float dans un champ de texte, utiliser :
String s = String.valueOf(floatVar);
II. Menus
Les menus sur Android permettent d’ajouter des fonctionnalités supplémentaires, initialement cachées. Deux types existent :
- Un menu d’options, déclenché par le bouton matériel Menu.
- Un menu contextuel, déclenché par un long clic sur un élément.
Ces menus peuvent contenir du texte, des icônes, des boutons radios, des cases à cocher, des sous-menus ou des raccourcis.
II.1. Menu Contextuel
Pour créer un menu contextuel déclenché par un long clic sur un élément (exemple : element) :
- Déclarer un attribut pour l’élément et l’associer via
findViewById. - Ajouter un écouteur pour le long clic :
element.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
v.showContextMenu();
return false;
}
});
element.setOnCreateContextMenuListener(this);
- Générer la méthode
onCreateContextMenupour définir les éléments du menu. - Ajouter des menus avec
menu.add(groupID, itemID, ordre, "nom du menu"). Exemple :
menu.add(0, 1, 0, "Taux dinar -> euro");
menu.add(0, 2, 0, "Taux euro -> dinar");
- Définir le comportement au clic via
onContextItemSelected:
switch(item.getItemId()) {
case 1:
// Traitement 1 (exemple : afficher un Toast)
case 2:
// Traitement 2 (exemple : afficher un autre Toast)
}
TAF-4 : Menu Contextuel sur les Boutons Radios
Créer un menu contextuel pour les deux boutons radios avec deux options :
Taux dinar -> euro: afficher un message Toast avec le taux de conversion (1.9919).Taux euro -> dinar: afficher un message Toast avec le taux de conversion (0.5020).
II.2. Menu d’Options
Pour gérer le menu d’options :
- Générer la méthode
onCreateOptionsMenupour créer les éléments du menu. - Ajouter des options avant l’instruction
return. - Générer la méthode
onOptionsItemSelectedpour définir le comportement au clic.
TAF-5 : Menu d’Options
Créer un menu d’options avec deux éléments :
Conversion C° F: laisser vide pour l’instant.Quitter: permettre de quitter l’application viafinish().
III. Messages d’Alerte
Pour afficher un message d’alerte, utiliser le code suivant :
AlertDialog alertDialog;
alertDialog = new AlertDialog.Builder(this).create();
alertDialog.setTitle("Titre de l'alerte");
alertDialog.setMessage("Message à afficher !");
alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alertDialog.show();
TAF-6 : Alerte pour Champ Vide
Créer une alerte qui s’affiche si l’utilisateur clique sur le bouton Convertir alors que le champ de saisie est vide.
IV. Travail à Faire (Homework)
1. Créer une nouvelle activité nommée ConversionTemperature dans le même projet. Elle doit convertir entre Celsius et Fahrenheit.
Formules de conversion :
Tc = (5/9) * (Tf - 32)
Tf = (9/5) * Tc + 32
où Tc est la température en Celsius et Tf en Fahrenheit.
2. Implémenter le menu d’options Conversion C° F de la première activité pour qu’il ouvre la deuxième.
3. Créer un menu d’options dans la deuxième activité avec deux options :
Revenir à la conversion euro-dinar: permettre de retourner à la première activité.Quitter: fermer l’application viafinish().
FAQ
Comment convertir une valeur saisie en float ?
Utiliser Float.valueOf(edt.getText().toString()) où edt est le champ de texte (EditText) contenant la valeur.
Comment afficher un message dans un Toast ?
Utiliser Toast.makeText(this, "Message", Toast.LENGTH_SHORT).show() pour afficher un message temporaire.
Comment revenir à une activité précédente depuis une nouvelle activité ?
Utiliser Intent intent = new Intent(this, NomActivite.class); puis startActivity(intent) pour ouvrir la première activité.