Archives mensuelles: November 2014

Programmation Android

Android — Dialog (pop-up)

Les Dialogs sont l’équivalent sous Android des pop-up : ces composants apparaissent par dessus l’activité en cours pour informer l’utilisateur ou demander une validation ou des informations à l’utilisateur.

Dans les dernières versions d’Android, les Dialog utilisent un système appelé Fragment, qui permet d’inclure, ajouter et retirer en temps réel ou en fonction de la taille de l’écran des morceaux complets de l’interface utilisateur. Comme ce mécanisme n’est pas installé sur tous les terminaux, il faut en plus utiliser des bibliothèques de compatibilité, comme indiqué sur la page de référence des Dialogs :

Page de référence des Dialogs

Dialog sans utilisation des Fragments

Heureusement, il est aussi possible, même si cela est peu documenté, d’utiliser la version antérieure des Dialogs. Attention, cela ne se justifie que si l’on cherche à créer un pop-up simple ne tirant pas avantage des fonctionnalités apportées par les Fragments (possibilité d’utiliser le Dialog comme une activité entre autres).

Le mécanisme général est le suivant :

  • Instanciation et configuration d’un Dialog.Builder.
  • Appel de la méthode create() du builder qui produit un Dialog.
  • Appel de la méthode show() du Dialog.

Par rapport à ce qui est indiqué sur la page de référence, on a évité l’utilisation des DialogFragment et des complications associées. L’ensemble du code, de l’instanciation du Dialog.Builder à l’appel de show() peut être placé directement à l’endroit de votre code où vous souhaitez faire apparaître le Dialog. Si la configuration du Builder est un peu longue, il peut être plus pratique de créer une méthode qui se charge de l’affichage du Dialog pour améliorer la lisibilité.

Adapter le code du tutoriel

Si vous copiez-collez le code de l’aide, il faut adapter celui-ci. Tout d’abord, chacune des méthodes set configurant un texte existe ici sous deux variantes : une pour les resources de type String (R.string… , à définir dans le fichier xml correspondant), et une pour les String (à mettre directement comme argument).
Le deuxième point susceptible de poser problème est le passage de lactivité comme paramètre. Si votre code est placé dans une activité, il suffit d’utiliser this à la place du getActivity() de l’exemple. Si votre code est l’intérieur d’une classe elle-même placée dans l’activité, alors il faut préciser explicitement que le this doit se référer à l’activity : MyActivity.this.

Programmation Android

Android S3 — Projet

Le projet est disponible sur Github : Projet Android S3 (2014)

Le travail demandé concerne principalement l’interface. Vous disposez de six séances (dont celle-ci) pour améliorer l’interface utilisateur de l’application. La septième et dernière séance est réservée à l’évaluation.

Déroulement du projet

La première chose à faire est de télécharger et installer le projet afin de le faire tourner (sur émulateur ou sur tablette). Il est recommandé d’utiliser Git pour gérer le projet (dans ce cas, faire un fork du projet puis un clone), mais ce n’est pas obligatoire (téléchargez l’archive .zip).

Une fois le projet récupéré, installez-le et exécutez-le. Jouez plusieurs parties afin de voir ce qui peut être amélioré et comment (par exemple : barre de progression pour le temps, animation pour indiquer le succès ou l’échec, message indiquant la fin de la partie, page donnant les meilleurs scores etc…).

Il est ensuite recommandé de vous familiariser avec les fichiers du projet, en gardant à l’esprit qu’il faudra intervenir sur ces fichiers pour modifier l’interface. Les fichiers sont commentés, et leur fonctionnement sera détaillé lors de la première séance.

Les TP suivants se feront en autonomie sur le projet, le ou les enseignants étant disponibles pour vous assister. Une bonne partie des compétences nécessaires ont étés vues dans les TD/TP de la première période. Si vous ne trouvez pas comment réaliser quelque-chose, demandez ! Si des points techniques intéressant plusieurs binômes nécessitent un cours, celui-ci sera mis en place au plus tard pour la séance suivant la demande.

Travail attendu

Au strict minimum, le style de l’application devra être changé, les « bugs » corrigés (gestion correcte du changement d’orientation et de la fin de partie). Il faudra ajouter une activité de démarrage et/ou de score (ou en tout cas présenter les informations correspondantes)

Il est possible de changer les images utilisées, et cela est même recommandé pour personnaliser le thème de votre application. Néanmoins, le travail sur les images devra être fait en dehors des TP. Si vous changez les images, gardez à l’esprit que pour fonctionner correctement il en faut une vingtaine, avec trois à six traits pour chacune. Vérifiez aussi qu’il est possible de construire des problèmes de même nature que ceux présentés dans l’application d’origine avec vos image, et ne présentant qu’une seule solution. Exemple d’idées pour des images alternatives : jeu des 7 différences (plusieurs détails peuvent différer de plusieurs manière différentes par rapport à une même image de référence), personnages de série/film, tableaux (avec comme attributs le peintre, la période, le style etc…)

Le travail le plus abouti pourra être publié sur Google Play, à condition d’avoir l’accord des étudiants et que l’application soit publiable (je pense en particulier aux éventuels problèmes de propriété intellectuelle).