参见英文答案 Android: How to detect double-tap?19个 我想检测一个视图上的doubletap,比如一个按钮,然后知道它是哪个视图.我见过 this similar question,但他们说这是一个重复的问题似乎没有回答我的
          我想检测一个视图上的doubletap,比如一个按钮,然后知道它是哪个视图.我见过 this similar question,但他们说这是一个重复的问题似乎没有回答我的问题.
我只能find将GestureDetector添加到活动中,并向其添加一个OnDoubleTapListener.但只有在我点击屏幕的背景/布局时才会触发.当我(双击)按钮时不会触发它.
这是我在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;  
        }  
    });
 您只需使用这几行代码即可实现此目的.就这么简单. 
  
  
 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);
        }
    }); 
 将这段代码放在要在视图上设置双击操作的活动或适配器上.
