Comment attraper des événements double tap dans Android en utilisant OnTouchListener
Je suis en train d'essayer d'attraper double-tap événements à l'aide de OnTouchListener. Je me dis que je serait long pour motionEvent.ACTION_DOWN, et un autre le long d'un deuxième motionEvent.ACTION_DOWN et de mesurer le temps entre les deux d'entre eux et de faire quelque chose avec elle. Cependant, je vais avoir un moment difficile de déterminer exactement comment cette approche. Je suis à l'aide de l'interrupteur cas pour ramasser multitouch événements, donc je préfère ne pas essayer et de réorganiser tout cela pour mettre en œuvre GestureDetector (et, malheureusement, il est impossible de mettre en œuvre les deux ontouchlistener et Gesturedetector simultanément). Toutes les idées aiderait grandement:
i.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
ImageView i = (ImageView) v;
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
long firstTouch = System.currentTimeMillis();
///how to grab the second action_down????
break;
source d'informationauteur benbeel
Vous devez vous connecter pour publier un commentaire.
J'ai abordé ce problème plus tôt. Elle implique l'utilisation d'un Gestionnaire d'attendre une certaine quantité de temps à attendre pour le deuxième clic: Comment puis-je créer un Événement de Clic et Double-Cliquez sur l'Événement lorsque la Touche Menu est enfoncée?
Dans la définition de votre classe:
Puis dans votre corps de classe:
Cela a été adapté à partir d'une réponse dans: DoubleTap dans android par https://stackoverflow.com/users/1395802/karn
Avec la classe helper SimpleGestureListener qui implémente l'GestureListener et OnDoubleTapListener vous n'avez pas besoin de beaucoup pour faire.
C'est beaucoup plus simple:
Voici ma solution.
Il était important pour moi d'avoir un rapide et la séparation claire de "robinet" et "double tap".
J'ai essayé
GestureDetector
d'abord mais avait de très mauvais résultats. Peut-être à la suite de mon imbriquée à l'utilisation de scrollviews - qui sait...Je me concentre sur
MotionEvent.ACTION_UP
et l'ID de l'élément taraudé. Pour garder le robinet d'abord vivant, je utiliser unHandler
l'envoi d'un message retardé (350ms) de sorte que l'utilisateur a peu de temps pour placer son deuxième appuyez sur laImageView
. Si l'utilisateur a placé une deuxième appuyez sur un élément avec un id identique je le prends comme un double tap, supprimer le message retardé et rund mon code personnalisé pour un "double tap". Si l'utilisateur a placé un robinet sur un élément avec un ID différent je le prends comme nouveau robinet et de créer un autreHandler
.Classe des variables globales
Exemple de Code
Si vous souhaitez mettre en place un double tap, vous devriez regarder le code source de GestureDetector. C'est très simple et claire.