2010-07-14 19 views

risposta

2

Sono sicuro che tutto il codice che fa è determinare se il secondo clic era entro una certa ora del primo clic, altrimenti trattarlo come un secondo clic. Ecco come lo farei comunque.

1

è sufficiente utilizzare setOnTouchListener per registrare il primo e il secondo tempo di clic. Se sono molto vicini, determinalo come doppio clic. In questo modo,

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; 
      } 
     }); 
    } 
} 
Problemi correlati