Travail Pratique 4
Exercise Android sur tablette Xoom de Motorola
Tutoriel FACULTATIF pour ceux qui veulent installer un environnement de développement Android sur leur propre machine: TutorielInstallationAndroidXoom.docx
Code de départ pour le travail pratique 4, tel que expliqué en classe: Log350Example6.zip
À dézipper et mettre dans votre dossier workspace d'Eclipse.
Diapos du cours: LOG350-2012ete-tp4.pptx
Tel que expliqué en classe, le code de départ permet déjà d'effectuer plusieurs opérations:
- 2 doigts sur le fond: zoom et translation de la caméra
- 2 doigts sur une forme: translation, rotation, et changement d'échelle de la forme
- 1 doigt sur le bouton "Lasso" pour se mettre en mode lasso: 1 autre doigt peut dessiner une courbe lasso. Les formes sélectionnées par le lasso sont ensuite dessinées avec un enveloppe convexe englobant.
Quelques endroits intéressants à regarder dans le code,
dans le fichier DrawingView.java:
- Le constructeur de DrawingView qui crée les trois formes de départ
- La méthode onDraw qui dessine tout
- La méthode onTouch qui traite les événements de toucher, déplacement de doigts, et relâchement
Notez que, contrairement à ce que j'avais planifié et annoncé en classe, je n'ai pas réussi à coder la translation par 1 doigt de la caméra ni la translation par 1 doigt d'une forme. (J'ai manqué de temps). Donc, j'ai rajouté ces fonctionnalités à la liste de modifications que vous pouvez effectuer, si vous voulez.
Modifications que vous pouvez effectuer (voir les diapos du cours pour des illustrations):
- [0.5 points] 1 doigt sur le fond: translation de la caméra
- [0.5 points] 1 doigt sur une forme: translation de la forme
- [1 point] 1 doigt sur la sélection actuelle: translation de toutes les formes sélectionnées
- [1 point] Rajouter un bouton "Effacer" permettant d'effacer des formes complètes. Attention: quand vous supprimez une forme, assurez vous de l'enlever du ArrayList selectedShapes, sinon ça pourrait rester en mémoire
- [1 point] Rajouter un bouton "Encadrer" qui fait un zoom pour centrer la scène. Pour programmer cette fonction, faites quelque chose comme
gw.frame(shapeContainer.getBoundingRectangle(),true), où gw est l'instance de GraphicsWrapper
- [2 points] Rajouter un bouton "Créer" permettant de créer des nouveaux polygones.
Conseil: au lieu de créer le nouveau polygone à partir des positions brutes des doigts
(qui peuvent vous arriver dans n'importe quel ordre),
utilisez Point2DUtil.computeConvexHull() pour calculer un enveloppe convexe des doigts,
et utilisez cet enveloppe convexe pour créer le nouveau polygone.
Attention de bien distinguer entre les systèmes de coordonnées monde ("world") et pixels.
Remarquez les appels dans le code à
gw.setCoordinateSystemToWorldSpaceUnits()
(pour dessiner en espace monde),
gw.setCoordinateSystemToPixels()
(pour dessiner en espace pixels),
et gw.convertPixelsToWorldSpaceUnits
(pour convertir d'un espace vers l'autre).
Testez vos modifications à différents niveaux de zoom,
pour confirmez que les formes suivent toujours vos doigts correctement.
Une équipe de N personnes doit effectuer des modifications valant N points.
D'autres exemples de code Android, qui sont FACULTATIFS, pour les gens intéressés:
Log350Example12345.zip