Jump to content

Archived

This topic is now archived and is closed to further replies.

zoontek

Action au survol d'un bouton

Recommended Posts

Bonjour à tous,

Au coeur d'un projet de développement d'un petit jeu sur la plateforme Android, vous avons jusqu'à mi-mars pour développer celle-ci.

Mais depuis une semaine, je bloque sur un truc je pense tout bête... Et je ne voudrais pas créer du retard :emo_im_undecided:

Ce qui bloque, tout simplement:

Lors d'un clic sur ce bouton, le contenu des imageViews (drawable) permute.

J'aimerais modifier ce petit bout de code pour faire permuter ces deux carrés colorés au survol du doigt.

Screen.png

Je vous remercie d'avance :)

Share this post


Link to post
Share on other sites

Il n'existe vraiment aucun équivalent au onMouseOver()?

Même une solution détournée avec utilisation des gestures me suffirait. :emo_im_undecided:

Share this post


Link to post
Share on other sites

Le mouvement doit être spécifiquement du bas vers le haut ?

édit: essaye de voir du coté du "GestureDetector", jamais utilisé mais il propose des méthodes tels que le onFling qui détecte un "mouvement brusque".

jette un coup d'oeil ici : http://android.cyrilmottier.com/?p=215

Par contre du devrai faire un calcul entre les deux motion event arg0 (doigt au début) et arg1 (doigt à la fin), genre si tu veut que le mouvement soit détecté du bas vers le haut:

//dans la méthode onFling

if(arg1.getY - arg0.getY > distance_minimal_du_mouvement)

{

//faire ton action

}

je dis pas que mon calcul est juste mais je pense que ça doit être dans se sens là.

Share this post


Link to post
Share on other sites

Au contraire, le mouvement doit être aléatoire, du moment qu'il y a un survol quelconque.

Je vais analyser en détails le lien que tu me donnes ;)

Par contre, j'ai vu qu'il existait également une fonction ouTouch(), pourrait elle être utilisée dans le cas suivant?

Share this post


Link to post
Share on other sites

Au contraire, le mouvement doit être aléatoire, du moment qu'il y a un survol quelconque.

Je vais analyser en détails le lien que tu me donnes ;)

Par contre, j'ai vu qu'il existait également une fonction ouTouch(), pourrait elle être utilisée dans le cas suivant?

La méthode "ontouch" va être détectée dès que tu touche l'écran (et aussi quand tu le lâche), donc si tu veut qu'il y ait une détection de "glissement" c'est pas top.

Dans le tuto cette méthode est utilisé pour appeler le GestureDetector qui va s'occuper de de voir si c'est "un mouvement brusque" ou un "long touch" (ou autre méthode proposée) que t'a fait et va appliquer la méthode correspondante (grâce au paramètre MotionEnvent).

Share this post


Link to post
Share on other sites

Attend vu que tu ne veut pas qui qui y'ait une direction spécifique le gesturedetector te servira à rien. Je test un truc je te tiens au courant.

édit:

Bon j'ai essayé d'implémenter in TouchListener sur un bouton et détecter les différents MotionEvent mais comme je pensais le listener n'est appelé que lorsque le bouton est cliqué.

Don pour finir je pense que tu vas devoir implémenter un GestureDetector sur ta view. . .

Share this post


Link to post
Share on other sites

J'ai essayé toutes les solutions se présentant à moi, au final il n'y a rien qui fonctionne (de manière simple) :emo_im_undecided:

Share this post


Link to post
Share on other sites

Après une bidouille, j'ai réussi avec un onTouchListener.

Pour que ça fonctionne, à 100%, il faudrait que lorsque je l'ordonne, dans le onTouch, on puisse simuler la fin de celui-ci.

(Le téléphone doit avoir l'impression qu'on retire physiquement son doigt, hors c'est faux...)

C'est possible, ça? :emo_im_undecided:

Share this post


Link to post
Share on other sites

Une simple variable à true ou false ne peut pas faire ton affaire? Lorsque tu le veux, tu met ta variable à "false", tu exécutes le code du onTouch uniquement lorsqu'elle est à true.

Share this post


Link to post
Share on other sites

Une simple variable à true ou false ne peut pas faire ton affaire? Lorsque tu le veux, tu met ta variable à "false", tu exécutes le code du onTouch uniquement lorsqu'elle est à true.

J'y avais pensé, mais dans ce cas l'action ne pourrait être exécutée qu'une seule fois.

Si endTouch == false -> Faire le contenu du onTouch

À la fin de celui-ci, endTouch = true, de façon à ce que même si on continu le mouvement du doigt, il ne le fasse plus.

Mais ça revient au même... Pour remettre endTouch à "true", il faudrait détecter la fin du mouvement, le retrait du doigt.

Ce boolean devient donc facultatif.

Mais bon, peut-être pensez-vous la chose autrement, et dans ce cas, ça serait bien sympathique de me détailler votre pensée :)

Share this post


Link to post
Share on other sites





×
×
  • Create New...