Android TP2
Il s’agit de faire une application permettant de faire une conversion (de degrés celsius en farenheit, de distance — entre cm et in par exemple, ou de conversion de monnaies, comme vous voulez).
Partie 1 – Interface graphique
- Créez un projet Android (n’oubliez pas d’indiquez un nom de package cohérent PAS example.com, les noms de package s’écrivent plutôt en minuscules).
- Ouvrez l’éditeur graphique d’écrans (dans le navigateur de projet, ouvrez app/res/layout). Insérer les widgets nécessaires pour notre convertisseur. Le TextView se trouve dans la palette Form Widgets (vous pouvez prendre un « Large »), et l’EditText dans la palette Text Fields. Attention aux étiquettes. Utilisez l’éditeur de traductions (cf TP1) pour faire 2 versions, une en anglais et une dans une autre langue (en Français, par exemple mais vous pouvez choisir une autre langue qui vous est familière).
Partie 2 – Implémentation
- Ouvrez le source java (dans le navigateur de projet, ouvrez app/java, puis trouvez le code de l’activité (par défaut MainActivity.java sauf si vous l’avez changé dans l’assistant de création de projet).
- Créez des attributs pour garder une référence sur les 2 champs de texte :
private EditText champTextDecimal, champTextBinaire;
et les associer aux éléments du layout grâce à leurs ID (dans la méthode onCreate) :
champTextDecimal=(EditText) findViewById(R.id.editTextDec);
Attention dans l’exemple ci dessus, l’ID a été modifié (l’ID par défaut est « edittext1 »). On trouve les ID dans l’éditeur graphique en sélectionnant un document puis en cherchant dans la fenêtre des propriétés (Properties, par défaut dans la moitié inférieure à droite de la fenêtre).
- Toujours dans la méthode onCreate, déclarer la classe courante comme listener du bouton. Cela nous permettra de traiter les événements en provenance du bouton.
Button b=(Button) this.findViewById(R.id.buttonConv); b.setOnClickListener(this);
Il n’est pas nécessaire de garder la référence au bouton en attribut (sauf si on a besoin de changer fréquemment le texte présent sur le bouton).
Maintenant il faut que la classe courante (MainActivity) implémente l’interface OnClickListener, et donc implémenter la méthode :
public void onClick(View v)
.
Dans un premier temps on enverra simplement un toast, c’est à dire un message temporaire à l’utilisateur :
Toast.makeText( getApplicationContext(), "texte du message", Toast.LENGTH_SHORT).show();
- Implémentez la méthode de conversion : allez chercher le texte saisi dans le champs correspondant (attention la méthode getText() de EditText ne renvoie pas directement un String, il faut le convertir, par exemple, en utilisant « toString()« , puis convertir cette chaîne en entier. On utilisera la méthode « setText(…) » pour placer le résultat dans le champ de saisie correct.
- Pour l’instant cette application ne fonctionne que dans un sens. Ajoutez un second bouton pour faire la conversion inverse, et implémentez la. Maintenant que nous aurons 2 boutons, la méthode de traitement des événements (onClick) doit faire la différence entre les 2. Pour cela on utilisera la méthode getId() de l’objet View passé en argument, et on le comparera à l’ID du bouton.
- Cherchez sur Internet la façon de se passer des boutons de conversion : comment faire pour que la conversion se fasse en temps réel, à chaque fois qu’on entre un chiffre dans le champs de saisie.
Complément facultatif
A faire si vous avez terminé avant les autres… et dans ce cas c’est obligatoire 😉
- Proposez une modification de l’interface pour permettre plusieurs conversions (par exemple en plus des températures, des distances — km/miles, cm/inches — et de volume — oz/cl –, ou bien plusieurs types de devices).
- Implémentez cette solution dans une version 2 de votre application (en gardant la version 1 — comment faire ?).