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 res → new 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.