Wie Sie doppelte Antipp-Ereignisse in Android mithilfe von OnTouchListener abfangen

9

Ich versuche, Doppeltipp-Ereignisse mit dem OnTouchListener abzufangen. Ich denke, ich würde ein Long für motionEvent.ACTION_DOWN und ein anderes Long für ein zweites motionEvent.ACTION_DOWN setzen und die Zeit zwischen den beiden messen und dann etwas damit machen. Allerdings fällt es mir schwer, genau herauszufinden, wie ich das angehen soll. Ich benutze Switchcases, um Multitouch-Events aufzunehmen, also versuche ich nicht, all dies neu zu versuchen, um GestureDetector zu implementieren (und es ist leider unmöglich, gleichzeitig ontouchlistener und Gesturedetector zu implementieren). Irgendwelche Ideen würden sehr helfen:

%Vor%     
benbeel 06.09.2011, 03:16
quelle

6 Antworten

1

Ich habe dieses Problem früher angesprochen. Dazu muss ein Handler eine bestimmte Zeit warten, bis er auf den zweiten Klick wartet: Wie kann ich ein Single Click Event und Double Click Event erstellen, wenn die Menu Taste gedrückt wird?

    
Ian 06.09.2011, 03:21
quelle
11

In Ihrer Klassendefinition:

%Vor%

Dann in Ihrem Klassenkörper:

%Vor%

Dies wurde von einer Antwort in DoubleTap in Android von Ссылка

    
birdman 11.04.2013 10:57
quelle
8

Mit der Hilfsklasse SimpleGestureListener, die den GestureListener und OnDoubleTapListener implementiert, brauchen Sie nicht viel zu tun.

%Vor%     
Victor Gomes 13.11.2015 14:40
quelle
3

Das ist viel einfacher:

%Vor%     
L.Grillo 30.06.2014 16:50
quelle
0

Wenn Sie das Doppeltippen implementieren möchten, sollten Sie sich den Quellcode von Statusdetektor . Es ist sehr einfach und klar.

    
grine4ka 22.07.2013 12:34
quelle
0

Hier ist meine Lösung.

Wichtig war mir eine schnelle und klare Trennung von "single tap" und "double tap". Ich probierte GestureDetector zuerst aus, hatte aber sehr schlechte Ergebnisse. Vielleicht ein Ergebnis meiner verschachtelten Verwendung von Scrollviews - wer weiß ...

Ich konzentriere mich auf MotionEvent.ACTION_UP und die ID des angezapften Elements. Um den ersten Tap am Leben zu erhalten, verwende ich eine Handler , die eine verzögerte Nachricht (350ms) sendet, damit der Benutzer etwas Zeit hat, seinen zweiten Tipp auf den ImageView zu setzen. Wenn der Benutzer ein zweites Mal auf ein Element mit der identischen ID klickt, nehme ich dies als Doppeltipp, entferne die verzögerte Nachricht und fülle meinen benutzerdefinierten Code für "Doppeltipp". Wenn der Benutzer ein Element mit einer anderen ID tappt, nehme ich dies als neues Tippen und erzeuge ein weiteres Handler dafür.

Globale Klassenvariablen

%Vor%

Codebeispiel

%Vor%     
Dirk 19.09.2014 20:25
quelle

Tags und Links