just use setOnTouchListener to record the first and second click time. If they are very close, define them as a double click. Like this,
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; } }); } }
wuliang8910
source share