2010-07-14 1 views

Antwort

0

Blick auf den Quellcode für GestureDetector und kopieren Sie die Bits, die Sie benötigen (insbesondere, Blick auf die isConsideredDoubleTap Methode)

https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/GestureDetector.java

+0

Ich benutze Diagramm-Anwendung, wenn ich auf den Punkt für Doppelklick klicke, wird es zu einer anderen Aktivität gehen. Wenn ich Gesten-Detektor verwendet werde, wenn ich irgendwo klicke, wird es zu anderen Aktivitäten gehen – user386430

2

Ich bin sicher, dass der ganze Code dort bestimmt, ob der zweite Klick innerhalb einer bestimmten Zeit des ersten Klicks war, andernfalls behandle es als einen zweiten Klick. So würde ich es trotzdem machen.

1

Verwenden Sie einfach setOnTouchListener, um die erste und zweite Klickzeit aufzuzeichnen. Wenn sie sehr nahe sind, bestimmen Sie es als Doppelklick. Wie diese

public class MyActivity extends Activity { 

    private final String DEBUG_TAG= "MyActivity"; 
    private long firstClick; 
    private long lastClick; 
    private int count; // to count click times 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     Button mButton= (Button)findViewById(R.id.my_button); 
     mButton.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View view, MotionEvent motionEvent) { 
       switch (motionEvent.getAction()) { 
        case MotionEvent.ACTION_DOWN: 
         // if the second happens too late, regard it as first click 
         if (firstClick != 0 && System.currentTimeMillis() - firstClick > 300) { 
          count = 0; 
         } 
         count++; 
         if (count == 1) { 
          firstClick = System.currentTimeMillis(); 
         } else if (count == 2) { 
          lastClick = System.currentTimeMillis(); 
          // if these two clicks is closer than 300 millis second 
          if (lastClick - firstClick < 300) { 
           Log.d(DEBUG_TAG,"a double click happened"); 
          } 
         } 
         break; 
        case MotionEvent.ACTION_MOVE: 
         break; 
        case MotionEvent.ACTION_UP: 
         break; 
       } 
       return true; 
      } 
     }); 
    } 
}