在模拟器中双击时,不会调用GestureDetector.SimpleOnGestureListener#onDoubleTap(MotionEvent)

时间:2014-12-29 03:35:50

标签: android android-activity

我有一个活动通过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和单击动作。没有双击。

0 个答案:

没有答案