2010-07-14 8 views

Répondre

0

Regardez le code source pour GestureDetector et copier les bits dont vous avez besoin (en particulier, regardez la méthode isConsideredDoubleTap)

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

+0

je suis en utilisant l'application graphique si je clique sur le point pour double-cliquez, il ira à une autre activité.if je suis utilisé détecteur de gestes si je clique partout où il ira à une autre activité – user386430

2

Je suis sûr que tout le code là-bas est de déterminer si le deuxième clic était dans un certain laps de temps du premier clic, sinon traiter comme un deuxième clic. C'est comme ça que je le ferais de toute façon. Il suffit d'utiliser setOnTouchListener pour enregistrer le premier et le second temps de cliquage.

1

Si elles sont très proches, déterminez-le en double-cliquant. Comme cela,

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; 
      } 
     }); 
    } 
} 
Questions connexes