Android MotionEvent: Finden Sie heraus, ob eine Bewegung außerhalb der Ansicht stattgefunden hat

7

Ich habe eine Taste und einen OnTouchListener daran angeschlossen. Wie kann ich herausfinden, ob die Bewegung (wenn der Benutzer den Knopf drückt) innerhalb oder außerhalb der Bewegung passiert? Sowohl event.getAction () als auch event.getActionMasked () geben nur 0, 1 oder 2 zurück, also ActionDown, ActionUp, ActionMove. Es gibt eine konstante MotionEvent.ACTION_OUTSIDE, die 4 ist, aber irgendwie erhalte ich sie nicht, auch wenn ich Touch außerhalb der Schaltfläche ziehe - ich erhalte immer noch 2 von beiden Methoden. Was ist das Problem?

UPD: Ich habe eine gute Lösung gefunden - überprüfe den fokussierten Zustand in der Ansicht nach ACTION_UP. Wenn es nicht fokussiert ist, bedeutet dies, dass die Bewegung außerhalb der Ansicht stattgefunden hat.

    
Yury Pogrebnyak 23.06.2012, 19:03
quelle

5 Antworten

7

Dieses Flag gilt nur für Windows, nicht für Ansichten. Sie erhalten ACTION_MOVE , wenn Sie Ihren Finger von der Ansicht wegbewegen, bleibt das Ereignis in der Ansicht, von der es stammt. Sehen Sie sich den Quellcode für SeekBar an, wenn Sie eine Klarstellung benötigen: Auch wenn Sie Ihren Finger von der Leiste bewegen, zieht der Daumen immer noch nach!

Verwenden Sie hierzu FLAG_WATCH_OUTSIDE_TOUCH funktioniert gut.

    
Tom 23.06.2012, 19:15
quelle
5

case MotionEvent.ACTION_CANCEL hat für mich funktioniert.

    
ArieDov 10.04.2013 12:38
quelle
4

Das MotionEvent.ACTION_OUTSIDE funktioniert nicht für Views.

Eine Lösung besteht darin, die X- und Y-Berührungsposition zu ermitteln und zu überprüfen, ob sie sich innerhalb der Grenzen der Ansicht befindet. Es kann so gemacht werden:

%Vor%     
Derzu 10.09.2016 17:21
quelle
3

Wenn OnTouchListener auf Button steht, erhalten Sie Bewegungsereignisse nur innerhalb von Button . Das MotionEvent.ACTION_OUTSIDE wird nur aufgerufen, wenn das Bewegungsereignis zuerst außerhalb der Grenzen von View liegt, und Sie sollten es wie ein ACTION_UP behandeln.

    
Jason Robinson 23.06.2012 19:16
quelle
0
%Vor%

Lösung für das Weiterleiten eines Berührungsereignisses aus einer anderen Ansicht

    
hmac 03.11.2017 12:06
quelle

Tags und Links