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

  1. 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).
  2. 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

  1. 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).
  2. 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).

  3. 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();
  4. 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.
  5. 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.
  6. 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 😉

  1. 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).
  2. Implémentez cette solution dans une version 2 de votre application (en gardant la version 1 — comment faire ?).