GestureOverlayView und Doppeltippen

9

Also würde ich gerne fortgeschrittene Gesten mit dem GestureOverlayView und OnGestureListener erkennen sowie doppelte Fingerbewegungen und langes Drücken mit GestureDetector erkennen können. Ich habe beide Funktionen getrennt in zwei verschiedenen Projekten. Ich versuche jedoch, sie zu kombinieren und stoße auf einige Probleme. Es scheint, dass wenn ich zweimal tippe / lang drücke, wird es nicht erkannt, weil die GesteOverlayView den gesamten Bildschirm abdeckt und nur die erweiterten Gesten erkennt, die im Gesture Builder definiert sind. Weiß jemand, wie man GestureOverlayView so einrichtet, dass GestureDetector seinen Job ausführen kann? Mein Code:

%Vor%

Und das xml ...

%Vor%

Vielen Dank im Voraus!

    
Basel Qumsiyeh 08.02.2011, 07:01
quelle

4 Antworten

3

Ich habe es getan, aber ich bin mir nicht sicher, ob meine Lösung für Sie funktionieren wird. Müssen Sie die gesamte Aktivität oder nur Ihre Liste doppelt antippen und lang drücken?

In meinem Projekt, was ich habe, ist natürlich, dass GestureOverlayView alles umhüllt, aber mein GestureDetector wurde nur auf dem Container zugewiesen, den ich mit diesen Ereignissen behandeln möchte, speziell in einem Grid mit Thumbnails.

Tatsächlich befindet sich mein Gesten-Detektor in einem View.OnTouchListener

%Vor%

}

Dann muss ich diesen Touch-Listener nur meinem Raster zuweisen. In Ihrem Fall kann es auf Ihrer Liste verwendet werden.

%Vor%

Was passiert, ist, dass GesturOverlayView Berührungsereignisse an innere Ansichten weitergibt, während eine Geste nicht erkannt wird. Die Lösung besteht darin, einen Touch-Listener zu erstellen, in dem Sie einfache Gesten mit GestureDetector in der Listener onTouch-Methode erkennen können. Hoffe es kann dir helfen.

    
fr4gus 14.07.2011 16:55
quelle
0

Das Problem kommt von der Methode onTouchEvent (event) Ihrer Aktivität, die nicht aufgerufen wird, weil das Ereignis von der GestureOverlayView abgefangen wird.

Wenn Sie dieses Ereignis in Ihrer Aktivität abrufen möchten, sollten Sie die Methode dispatchTouchEvent (event) überschreiben.

In Ihrem Fall funktioniert dieser Code möglicherweise:

%Vor%     
Kéza 28.02.2012 13:11
quelle
0

Ich hatte das gleiche Problem.

Die GestureOverlayView fängt das onTouchEvent ab. Also setze einfach

%Vor%

Das Ergebnis sollte etwa so aussehen:

%Vor%     
Robbe 14.10.2014 23:36
quelle
0

Ich hatte ein Problem. Ich habe eine Lösung gefunden, aber ich weiß nicht, warum es funktioniert.

Ich verwende die dispathTouchEvent-Methode, rufe aber TouchEvent () mit meiner GestureDetector-Instanz auf.

%Vor%     
Jesus Lizarraga 31.01.2015 03:50
quelle

Tags und Links