36

I want to detect a doubletap on a view, like for example a button, and then know which view it was. I have seen this similar question but the question they say it is a duplicate of it does not seem to answer my question.

All I can find is to add a GestureDetector to the activity, and add a OnDoubleTapListener to it. But that is only triggered if I tap on the background/layout of my screen. It is not triggered when I (double)tap a button.

This is the code I have inside my onCreate:

 gd = new GestureDetector(this, this); gd.setOnDoubleTapListener(new OnDoubleTapListener() { @Override public boolean onDoubleTap(MotionEvent e) { Log.d("OnDoubleTapListener", "onDoubleTap"); return false; } @Override public boolean onDoubleTapEvent(MotionEvent e) { Log.d("OnDoubleTapListener", "onDoubleTapEvent"); //if the second tap hadn't been released and it's being moved if(e.getAction() == MotionEvent.ACTION_MOVE) { } else if(e.getAction() == MotionEvent.ACTION_UP)//user released the screen { } return false; } @Override public boolean onSingleTapConfirmed(MotionEvent e) { Log.d("OnDoubleTapListener", "onSingleTapConfirmed"); return false; } }); 
1
  • Perfect code on this method handle on single tap or double tap :) Commented May 5, 2015 at 8:34

1 Answer 1

26

You can achieve this by just using these few lines of code. It's that simple.

final GestureDetector gd = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener(){ //here is the method for double tap @Override public boolean onDoubleTap(MotionEvent e) { //your action here for double tap e.g. //Log.d("OnDoubleTapListener", "onDoubleTap"); return true; } @Override public void onLongPress(MotionEvent e) { super.onLongPress(e); } @Override public boolean onDoubleTapEvent(MotionEvent e) { return true; } @Override public boolean onDown(MotionEvent e) { return true; } }); //here yourView is the View on which you want to set the double tap action yourView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return gd.onTouchEvent(event); } }); 

Put this piece of code on the activity or adapter where you want to set the double tap action on your view.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.