Ich entwickle also eine Anwendung, die Multitouch verarbeiten muss. Grundsätzlich möchte ich Single Touch zum Drehen (das ist kein Problem). Und Multitouch zum Scrollen.
Ich habe den Basiscode, aber ich habe Probleme, wenn der Wechsel von Single zu Multitouch und umgekehrt geschieht. Grundsätzlich ruckt die Bewegung, weil die mittlere Position des Multitouchs (zwei Finger) und die absolute Position des einzelnen Fingers entfernt sind. Wenn ich also zwei Finger auf dem Bildschirm habe, bilden sie eine Mittelposition und heben dann einen Finger, es wäre wie eine schnelle Bewegung von dieser mittleren Position zur absoluten Einzelfingerposition. Das wird die Bewegung sein, die ich nicht will.
Das ist mein Code:
%Vor%Die onTouchDown-Funktion der Kamera legt nur den ersten Wert der Touch-Bewegung fest. Deshalb benutze ich es auch in der Aufwärtsbewegung, um einen neuen Anfangswert für die Single-Touch-Bewegung festzulegen, wenn Sie von einem Multitouch kommen.
Ich hoffe jemand weiß was mein Problem ist und kann mir weiterhelfen.
Beginnen Sie hier, wenn Sie es noch nicht gelesen haben, es geht über eine Reihe von Dingen, die sich mit Multitouch in Android beschäftigen: Ссылка
Ein paar Dinge über Ihren geposteten Code:
ACTION_DOWN
nie mit einer Zeigeranzahl von 2 sehen. ACTION_DOWN
wird nur für den ersten Zeiger gesendet, der untergeht. Alle Finger, die den Bildschirm nach dem ersten berühren, senden ACTION_POINTER_DOWN
. MotionEvent#getActionMasked()
) als für jeden Zeigerindex einzeln zu codieren. MotionEvent
herauszuholen. Wenn Sie die Zeigerbewegung im Zeitverlauf verfolgen, verwenden Sie die Zeiger-ID. Sie können das mit einfacher Mathematik lösen, obwohl es vielleicht schon einen besseren Weg gibt.
Erstellen Sie einfach ein Objekt, das die Position jedes Fingers enthält, wenn das Ereignis .ACTION_POINTER_X_UP ausgelöst wird, und ein boolesches Objekt, das den Typ des zuletzt verwendeten Touchmodus enthält.
%Vor%Als nächstes wird die Anweisung ACTION_MOVE (innerhalb des Falls = 1) ausgelöst, wenn der Benutzer seinen Finger bewegt, während er von Multi zu Single geht.
Je nachdem, was Sie tun möchten, können Sie nun entweder die einzelne Bewegung ignorieren (der boolesche Wert ist Ihre Prüfung), bis das Ereignis .ACTION_UP ausgelöst wird, und Sie setzen den Booleschen Wert auf false zurück
oder
Sie rufen eine Methode auf, die basierend auf den gespeicherten Standortwerten und dem Finger, der sich noch auf dem Bildschirm befindet, einige Berechnungen anstellt. Die Mathematik sollte ziemlich einfach sein, aber ich weiß nicht, was du eigentlich machen willst.
Tags und Links android touch multi-touch