为什么这个GestureDetector没有工作?

时间:2011-07-10 11:30:57

标签: java android

我想检测一个名为belowContainer的RelativeLayout上的fling-gestures,我的代码如下:

    // Create a new GestureListener
    GestureDetector.SimpleOnGestureListener gestureListener = new GestureDetector.SimpleOnGestureListener() {

        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2,
                float velocityX, float velocityY) {
            Log.d("test", "velocityx=" + velocityX);
            return true;

        }

    };

    // Setup a new GestureDetector, attach the custom GestureListener
    final GestureDetector gestureDetector = new GestureDetector(this, gestureListener);

    // Attach the GestureDetector to the belowContainer onTouchListener
    belowContainer.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent event) {
            Log.d("test", "clicked!");
            if(gestureDetector.onTouchEvent(event))  {
                Log.d("test", "gesture detected");
                return true;
            }

            return false;
        }
    });

我的应用程序注册下面的容器onTouch很好,但不知何故没有检测到甩动手势(日志只显示“点击!”而没有别的)。怎么样?

1 个答案:

答案 0 :(得分:2)

您是在设备上还是在模拟器中进行测试?

我的代码中没有问题。下面的容器是否足够大,以便你有足够的空间做出一个惊人的手势?你有任何可能“拦截”触摸事件的观点吗?

我建议您记录手势监听器可能捕获的所有其他方法,以便您知道是否正在接受其他手势。

您也可以尝试从活动中传递onTouchEvents,而不是从您的视图中传递...这样可以更容易地捕获手势事件(只是为了确保一切正常!) (覆盖Activity.onTouchEvent并将事件传递给手势检测器。