1. Objectif

Gérer les interactions utilisateurs sur des composants usuels. Comprendre le mécanisme d’adaptation d’une GUI Android.

2. Interaction avec les boutons

2.1. Créez un nouveau projet GUI_Test

Lancez Android Studio et créez un nouveau projet nommé « GUI_Test », avec pour nom de package « fr.iut.guitest ». Sélectionnez empty views activity (squelette Hello World).

2.2. Ajoutez 3 boutons classiques

Ajoutez 3 boutons classiques, dont un avec une image, comme dans le TP précédent. Pour chaque bouton ajouté, essayez d’enlever tous les warnings que vous pourriez avoir dans le code XML.

2.3. Écoutez les clics avec 3 méthodes différentes

Pour chacun de ces boutons, testez l’écoute du clic en utilisant une méthode différente pour chaque bouton (cf. cours). Pour l’instant, le clic doit simplement produire une trace dans la console Logcat avec un System.out.println.

2.4. Utilisez Log.i pour les logs

Faites en sorte que les clics produisent maintenant une sortie taguée dans Logcat : utilisez la méthode statique Log.i(tag, message).

3. Interaction avec les TextFields

3.1. Ajoutez un champ texte avec texte par défaut

Ajoutez un champ texte contenant par défaut le texte « entrez un texte ». Testez.

3.2. Définissez le texte par défaut comme ressource string

Assurez-vous que le texte par défaut est défini comme une ressource de type string (pas de warnings dans le layout).

3.3. Ajoutez d’autres TextFields avec différents types de clavier

Ajoutez d’autres TextField en testant différents types de clavier.

3.4. Affichez le contenu des champs au validateur

Faites en sorte que la validation des différents TextField provoque une sortie dans la console Logcat qui affiche le contenu de chaque champ texte.

4. CheckBox et ToggleButton

4.1. Étudiez la documentation sur les composants

De la même manière qu’un TextField nécessite l’utilisation d’un listener particulier, certains boutons doivent être écoutés grâce à des listeners spécifiques. Sur cette page Add core components , vous trouverez des exemples de code qui vous permettront de réaliser les exercices suivants.

4.2. Ajoutez un CheckBox

Ajoutez un bouton de type checkbox.

4.3. Loguez l’état de la CheckBox

Faites en sorte que l’interaction avec cette checkbox provoque un log qui affiche si elle est sélectionnée ou non.

4.4. Même exercice avec un ToggleButton

Mêmes exercices avec un ToggleButton. La sortie doit dire s’il est activé ou non.

5. Gestion de la mise en page des éléments avec RelativeLayout et LinearLayout

Nous n’avons pas encore fait correctement cette partie pendant le dernier cours mais vous pouvez vous inspirer des diapositives non vues pour réaliser cette partie. Nous reverrons le sujet en détail lors du prochain cours.

5.1. Comprenez les gestionnaires de layout

Jusqu’ici, nous avons travaillé avec un ConstraintLayout pour la mise en page des éléments (fichier XML). Suivant ce qu’on souhaite faire, il peut être intéressant d’utiliser d’autres gestionnaires de mise en page. Pour cela, il suffit de changer le gestionnaire utilisé dans le fichier XML.

5.2. Créez un projet MEP_relative

Créez un nouveau projet appelé MEP_relative, toujours en sélectionnant Empty views Activity.

5.3. Remplacez ConstraintLayout par RelativeLayout

Modifiez le projet de telle sorte que l’UI de la page d’accueil ne soit plus gérée par un ConstraintLayout, mais par un RelativeLayout.

5.4. Ajoutez des éléments d’interface

Ajoutez quelques éléments d’interfaces comme vu précédemment.

5.5. Créez des mises en page pour portrait et paysage

Faites en sorte de créer des mises en page différentes suivant que l’appli soit affichée en mode portrait ou paysage.

5.6. Créez un projet MEP_linear avec LinearLayout

Mêmes exercices avec un nouveau projet appelé MEP_linear, mais en utilisant cette fois un LinearLayout.

5.7. Utilisez les attributs spécifiques au LinearLayout

Pour le changement d’orientation, profitez des attributs spécifiques à un LinearLayout pour faciliter la définition de la mise en page.

5.8. Testez les différentes orientations

Testez les différentes orientations.

5.9. Ajoutez des éléments uniquement en mode portrait

Rajoutez des éléments graphiques uniquement pour le mode portrait et testez.

5.10. Créez des layouts pour différentes tailles d’écran

Créez de nouveaux fichiers de layout (bouton droit sur resnew layout resource) pour différentes tailles possibles de téléphone, par exemple small et large.

5.11. Testez sur des AVD de différentes tailles

Testez le résultat en créant des devices possédant différentes tailles/résolutions (AVD).

6. Taille des éléments dans un ViewGroup

6.1. Créez un projet "Sending"

Créez un nouveau projet nommé « Sending », avec pour nom de package « fr.iut.myapp », toujours avec Empty views Activity.

6.2. Utilisez un LinearLayout pour le layout principal

Modifiez le layout principal pour utiliser un LinearLayout, puis ajouter un TextField et un bouton (Send) sur la même ligne.

6.3. Testez les tailles automatiques

Testez les différents tailles automatiques possibles pour le TextField et le bouton.

6.4. Occupez tout l’espace disponible

Faites en sorte d’obtenir le résultat du en cours, où l’ensemble de l’espace disponible est occupé par ces éléments.

6.5. Vérifiez le comportement en rotation

Vérifiez que cela se produit automatiquement dans les différents modes d’orientation.

6.6. Écoutez le clic du bouton et affichez le contenu du TextField

Testez l’écoute du bouton : le clic doit produire une sortie Logcat qui affiche le contenu du TextField.

7. Boîte de dialogue

7.1. Créez une boîte de dialogue avec deux choix

En étudiant la documentation de la page donnée précédemment, section Dialogs, essayez de créer une boîte de dialogue qui propose deux choix, et de produire un log en fonction du choix effectué dans cette boîte.