2012-03-28 13 views
0

Ich teste this Beispiel auf Version 13 von Android (3.2) und ich habe ein Problem, wenn es mehrere Berührungen auf dem Bildschirm gibt.Wie vermeidet man Linien zwischen mehreren Berührungen?

Wenn ich das erste Mal berühre, dann gibt es ein action_down-Ereignis, wenn ich ein weiteres simultanes Berühren mache, dann bekomme ich kein action_down mehr, meine erste Berührung bleibt aktiv und ich kann action_move von der ersten Berührung erhalten. Das Problem ist, wenn ich die erste Berührung loslassen und die zweite bewegen, erzeugt es eine Linie zu dieser Berührung, weil es ein anderes Ereignis action_move erzeugt. Ich habe versucht, euklidische Distanz zu verwenden, aber es scheint sich zu sehr zu verlangsamen und macht die Zeilen unvollständig. Ich habe versucht, ein Producer/Consumer-Modell zu erstellen, aber immer noch das gleiche Problem. Ich habe auch versucht, die Zeit von der letzten Berührung zu überprüfen, aber das ist sehr ineffizient.

Hat jemand einen Vorschlag?

Antwort

1

Ich gebe zu, ich bin ein wenig verwirrt über das, was Ihr tatsächliches Problem ist, aber es scheint mir, als ob Ihr Problem einfach gelöst werden könnte, indem Sie mehr Berührungsereignisse behandeln. Wenn der zweite Finger herunterkommt, können Sie ein ACTION_POINTER_DOWN Ereignis erhalten, das eine zweite Berührung anzeigt, und Sie können dann ändern, wie Ihre ACTION_MOVE Ereignisse interpretiert werden, während der zweite Finger gedrückt ist, bis ein ACTION_POINTER_UP Ereignis durchkommt. Hoffe, dass beantwortet oder zumindest hilft Ihre Frage.

+0

I Die MotionEvent-Aktionen wurden vollständig ignoriert. Vielen Dank. – mrcaramori

+0

Nur eine Beobachtung: Ich bekam ACTION_POINTER_DOWN nicht zuerst mit der sekundären Berührung, nur ACTION_POINTER_UP und dann würde es ACTION_POINTER_DOWN mit mehr sekundären Berührungen erzeugen. Vielleicht ein Fehler. – mrcaramori