2011-01-05 2 views
2

Hallo Ich habe zwei Bildansichten in einem LinearLayout (vertikale Ausrichtung). Ich setze setOnTouchListener für beide Bildansichten. So kann ich sowohl den Multi-Touch-Zoom als auch das Ziehen der ImageViews beobachten. Das Problem kommt, wenn ich versuche, OnDoubletListener zu implementieren. OnDoubleTapListener funktioniert nur ohne die Verwendung von SetOnTouchListener.Android Multi-Touch-und Doppel-Tap zusammen für eine Bildansicht

Allerdings, wenn ich die setOnTouchListner Kommentar dann ich bin in der Lage Double Tap auszuführen ..

kann nicht die beiden feartures gleichzeitig arbeiten ?????

Wenn Sie wollen, kann ich auch den Quellcode zur Verfügung stellen .. Pl Hilfe

Ankit Verma

Antwort

0

Überprüfen Sie bitte folgenden Link, um Sie kann hilfreich sein ..implements GestureDetector http://android-journey.blogspot.com/2010/01/android-gestures.html

GestureDetector.OnDoubleTapListener {Der Listener, der verwendet wird, um zu benachrichtigen, wenn ein Doppeltipp oder ein bestätigter Einzeltipp auftritt. }

+0

Hallo Maneesh .... Vielen Dank für Ihre Antwort. Aber ich versuche Double Tap sowie Multi Touch für eine Imageview.GestureDetector Klasse behandelt nicht MultiTouch, Es kann nur mit SetOnTOuchListener für eine Ansicht behandelt werden.Sobald Sie den TouchListener eingestellt haben, können Sie GestureDetector nicht mehr verwenden. –

1

Hey ich weiß nicht, ob Sie immer noch mit dem gleichen Problem stecken, aber ich habe einen Weg gefunden, um es zu umgehen. Tatsächlich implementiere ich nur den OnTouchListner für die Multitouch-Ereignisse und ich vermesse die Zeit zwischen zwei Aufrufen von ACTION_DOWN. Wenn diese Zeit kleiner als ein bestimmter Wert ist, halte ich das für eine Doppelberührung und führe die Aktionen konsequent durch. Ich hoffe, das hilft. Wenn Sie einen Weg gefunden haben, sowohl den OnTouchListner als auch den GestureDetector.OnDoubleTapListener zu implementieren, lassen Sie es mich wissen!

2

Ich hatte auch das gleiche Art Problem konfrontiert .... ich mit dieser Art und Weise zu lösen ...

Wenn Sie mit Android mutitouch Controller http://code.google.com/p/android-multitouch-controller/ für Multi-Touch-

und GestureDetector http://www.41post.com/4194/programming/android-detecting-double-tap-events für doppeltes Tippen

als

aktualisieren Sie diese Schritte in MultiTouchController.java

-> imp ort

import android.view.GestureDetector.OnDoubleTapListener; 

    import android.view.GestureDetector.OnGestureListener; 

-> implementieren

public class MultiTouchController<T> implements OnGestureListener{ 

->

public MultiTouchController(MultiTouchObjectCanvas<T> objectCanvas2, boolean handleSingleTouchEvents) { 

      //.... 

    gd = new GestureDetector(this); 

    // set the on Double tap listener 
    gd.setOnDoubleTapListener(new OnDoubleTapListener() { 
     @Override 
     public boolean onDoubleTap(MotionEvent e) { 
      // set text color to green 
      Log.d("CLICK", "double taped"); 



      return false; 
     } 

     @Override 
     public boolean onDoubleTapEvent(MotionEvent e) { 
      // if the second tap hadn't been released and it's being moved 
      if (e.getAction() == MotionEvent.ACTION_MOVE) { 
       Log.d("CLICK", "double tap event ACTION_MOVE"); 
      } else if (e.getAction() == MotionEvent.ACTION_UP)// user 
                   // released 
                   // the 
                   // screen 
      { 
       Log.d("CLICK", "double tap event ACTION_UP"); 
      } 
      return false; 
     } 

     @Override 
     public boolean onSingleTapConfirmed(MotionEvent e) { 
      // set text color to red 
      Log.d("CLICK", "single taped"); 

      return true; 
     } 
    }); 

-> set Berührungsereignis auf OnTouch (Motion Ereignis)

public boolean onTouchEvent(MotionEvent event) { 

    gd.onTouchEvent(event); 

    try { 

       //..... 

gd Ändern Sie keine anderen Dateien.

Jetzt testen ... Hoffe, dass Sie Problem gelöst ... antworten müssen ...