2016-11-26 401 views
2

我是Android新手,最近学习了手势!onDoubleTap监听器和onDoubleTapEvent监听器之间的区别是什么

这两种方法有什么区别?

@Override 
public boolean onDoubleTap(MotionEvent e) { 
    return false; 
} 

而这一次

@Override 
public boolean onDoubleTapEvent(MotionEvent e) { 
    return false; 
} 

他们似乎做同样的事情。哪一个你用的,有什么区别

+0

我编辑了一个清晰的思路,答案:)希望我会帮你的 –

回答

2

简单的答案是

boolean onDoubleTap (MotionEvent e) - 

双击发生通知。

当双击发生 和param motionEvent是:l,下来第一次轻触的运动事件时,可以通知作业人员。

boolean onDoubleTapEvent (MotionEvent e)` - 

双击手势内的事件发生

您可以在双击手势发生内通知作业人员的事件,包括已通知downmoveup事件和和param motionEvent是为运动事件

所以用doubleTapEvent你可以得到额外的选项卡手势以及水龙头

看看 - >https://stackoverflow.com/a/19629851/5188159这种力量有助于您的触摸手势

进一步尝试了解这里发生了什么这个例子

//initialize the Gesture Detector 
     gd = new GestureDetector(this); 

     //set the on Double tap listener 
     gd.setOnDoubleTapListener(new OnDoubleTapListener() 
     { 
      @Override 
      public boolean onDoubleTap(MotionEvent e) 
      { 
       //set text color to green 
       tvTap.setTextColor(0xff00ff00); 
       //print a confirmation message 
       tvTap.setText("The screen has been double tapped."); 
       return false; 
      } 

      @Override 
      public boolean onDoubleTapEvent(MotionEvent e) 
      { 
       //if the second tap hadn't been released and it's being moved 
       if(e.getAction() == MotionEvent.ACTION_MOVE) 
       { 
        //set text to blue 
        tvTapEvent.setTextColor(0xff0000ff); 
        //print a confirmation message and the position 
        tvTapEvent.setText("Double tap with movement. Position:\n" 
          + "X:" + Float.toString(e.getRawX()) + 
          "\nY: " + Float.toString(e.getRawY())); 
       } 
       else if(e.getAction() == MotionEvent.ACTION_UP)//user released the screen 
       { 
        tvTapEvent.setText(""); 
       } 
       return false; 
      } 

      @Override 
      public boolean onSingleTapConfirmed(MotionEvent e) 
      { 
       //set text color to red 
       tvTap.setTextColor(0xffff0000); 
       //print a confirmation message and the tap position 
       tvTap.setText("Double tap failed. Please try again."); 
       return false; 
      } 
     });