我有一个活动通过onTouchEvent方法拦截触摸事件,我正在使用手势检测器类来检测常见的动作。我已经关注了Android Developer API,但是我的SimpleGestureListener.onDoubleTap方法在双击后永远不会被调用。
在我的活动定义中,我有:
protected final GestureDetector.SimpleOnGestureListener handler =
new GestureDetector.SimpleOnGestureListener() {
final String DEBUG_STR = "Gestures";
@Override
public boolean onDown(MotionEvent event)
{
Log.i(DEBUG_STR, "onDown");
childView.setText("onDown");
return true;
}
@Override
public boolean onDoubleTap(MotionEvent event)
{
Log.i(DEBUG_STR, "onDoubleTap");
childView.setText("onDoubleTap");
return true;
}
public boolean onDoubleTapEvent(MotionEvent e) {
Log.i(DEBUG_STR, "onDoubleTap");
childView.setText("onDoubleTap");
return true;
}
@Override
public boolean onFling(MotionEvent begin, MotionEvent end, float velocityX,
float velocityY)
{
Log.i(DEBUG_STR, "onFling");
childView.setText("onFling");
return true;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent event)
{
Log.i(DEBUG_STR, "onSingleTapConfirmed");
childView.setText("onSingleTapConfirmed");
return true;
}
};
protected GestureDetector detector;
在我的onCreate方法中,我初始化手势检测器:
detector = new GestureDetector(this, handler);
最后我的onTouchEvent方法:
public boolean onTouchEvent(MotionEvent event)
{
detector.onTouchEvent(event);
return super.onTouchEvent(event);
}
当我在模拟器中运行此活动时,除了双击注册外,我得到了所有内容。我已尝试在Nexus 5仿真设备的活动屏幕上双击鼠标,但双击似乎从未在日志或屏幕上打印过。
我不确定这里出了什么问题。我的代码看不出任何明显错误,因为它编译并记录了fling和单击动作。没有双击。