Le but de l'exercice est de manipuler les touch event, de créer son propre composant de vue et de dessiner dessus.
Les notions abordées pour cet exercice sont les suivantes :
- Création d'une classe View personnalisée ave sa méthode onDraw redéfinie
- Gestion des événements de toucher avec un OnTouchListener
Créez une vue vide nommée fr.uge.circles.GraphicsView qui prend tout l'écran. Pour cela, vous allez créer une classe fr.uge.circles.GraphicsView qui hérite de View (en redéfinissant tous les constructeurs avec super). Puis, vous allez créer un layout XML avec un seul composant (la GraphicsView) à l'intérieur. Le composant vide sera décrit de la manière suivante dans le XML :
<fr.uge.circles.GraphicsView android:id="@+id/graphicsview" android:layout_width="match_parent" android:layout_height="match_parent"/>
- Faites en sorte qu'à chaque fois que l'utilisateur touche cette vue, un Toast soit affiché avec les coordonnées du point touché. Indice : installez un onTouchListener sur la vue.
- A quoi servent les méthodes onDraw et invalidate d'une vue ? A quoi sert la méthode requestLayout() ? Est-elle utile ici ?
- On souhaite maintenant afficher un cercle à l'endroit où l'utilisateur touche la vue. Ecrivez le code dans le cas où l'on utilise un seul doigt (ou le pointeur de souris pour l'émulateur).
- Si l'utilisateur déplace son doigt après l'avoir appuyé sur l'écran, faîtes en sorte que le cercle suive son mouvement et se déplace également sur l'écran. Lorsque l'utilisateur relache le doigt, le cercle garde son dernier emplacement.
- Bonus #1 : supportez la pression de plusieurs doigts simultanément afin de placer plusieurs cercles, chaque doigt étant associé à un cercle de couleur différente (rouge pour le premier doigt, bleu pour le second doigt, vert pour le troisième doigt...). En règle générale, combien de doigts supportent au maximum les écrans multi-touch modernes (indice : comptez le nombre de doigts sur vos deux mains) ?
- Bonus #2 (difficile) : faîtes en sorte que la durée d'appui détermine la taille du cercle tracée. Par exemple si on laisse le doigt appuyé au même endroit durant 2 secondes, on trace un cercle 2 fois plus grand que si on le laissait appuyé qu'une seconde seulement.