Android: Unterschied zwischen ACTION_UP und ACTION_POINTER_UP

Lesezeit: 2 Minuten

Allein aus dem Android-Dokument verstehe ich den Unterschied zwischen ACTION_UP und ACTION_POINTER_UP nicht wirklich.
http://developer.android.com/reference/android/view/MotionEvent.html#ACTION_DOWN

Grundsätzlich möchte ich das Ereignis erfassen, wenn ein Finger vom Bildschirm losgelassen wird (auch wenn ein anderer ihn möglicherweise noch berührt).

Danke!

Beginnen Sie hier, falls Sie es noch nicht gelesen haben: http://android-developers.blogspot.com/2010/06/making-sense-of-multitouch.html

Android betrachtet Berührungsereignisse in Form von Gesten. Eine Geste in diesem Sinne umfasst alle Ereignisse vom ersten Finger, der den Bildschirm berührt, bis zum letzten Finger, der den Bildschirm verlässt. Die gesamte Ereignissequenz einer einzelnen Geste wird immer an dieselbe Ansicht gesendet, die während des anfänglichen ACTION_DOWN ausgewählt wurde, es sei denn, ein Elternteil unterbricht den Ereignisstrom aus irgendeinem Grund. Wenn ein Elternteil den Ereignisstrom eines Kindes abfängt, erhält das Kind ACTION_CANCEL.

Wenn Sie mit Multitouch-Ereignissen arbeiten, verwenden Sie immer den von getActionMasked() zurückgegebenen Wert, um die Aktion zu bestimmen. Wenn Sie Multitouch nicht benötigen oder mit einer älteren Plattformversion arbeiten, können Sie die ACTION_POINTER_*-Ereignisse ignorieren.

  • ACTION_DOWN ist für den ersten Finger, der den Bildschirm berührt. Dies startet die Geste. Die Zeigerdaten für diesen Finger stehen im MotionEvent immer auf Index 0.
  • ACTION_POINTER_DOWN ist für zusätzliche Finger, die über den ersten hinaus auf den Bildschirm gelangen. Die Zeigerdaten für diesen Finger befinden sich an dem von getActionIndex() zurückgegebenen Index.
  • ACTION_POINTER_UP wird gesendet, wenn ein Finger den Bildschirm verlässt, aber noch mindestens ein Finger ihn berührt. Das letzte Datensample über den Finger, der nach oben gegangen ist, befindet sich an dem von getActionIndex() zurückgegebenen Index.
  • ACTION_UP wird gesendet, wenn der letzte Finger den Bildschirm verlässt. Das letzte Datensample über den Finger, der nach oben gegangen ist, befindet sich bei Index 0. Dies beendet die Geste.
  • ACTION_CANCEL bedeutet, dass die gesamte Geste aus irgendeinem Grund abgebrochen wurde. Damit endet die Geste.

  • @adamp In meiner App möchte ich Single-Finger-Swipe und Double-Finger-Swipe implementieren. Aber was passiert, ist, wenn ich das Doppelfingerwischen mache, werden 2 Aktionen ausgeführt, dh die 1. war für 1 Fingerwischen und die 2. für 2 Fingerwischen. Könnten Sie bitte diese Frage überprüfen

    – Prabs

    11. Dezember 2015 um 7:36 Uhr

Ich glaube, es ist darauf zurückzuführen, dass Multi-Touch hinzugefügt wurde, ACTION_UP ist seit API-Level 1 vorhanden, aber ACTION_POINTER_UP wurde in API-Level 5 hinzugefügt, als Multi-Touch hinzugefügt wurde.

Das Ergebnis, das Sie erhalten, hängt davon ab, welche Methode Sie aufrufen, getAction() würde ACTION_UP zurückgeben, während getActionMasked() ACTION_POINTER_UP zurückgeben würde, aber Sie können auch getActionIndex() aufrufen, um herauszufinden, welcher der Multi-Touch-Zeiger gerade ausgelöst wurde. Ich denke, das ist, was Sie tun möchten.

  • ACTION_POINTER_UP wird anstelle von ACTION_UP verwendet, wenn sich noch ein Finger auf dem Bildschirm befindet

    – Chris

    4. März 2015 um 2:07 Uhr

1438700cookie-checkAndroid: Unterschied zwischen ACTION_UP und ACTION_POINTER_UP

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy