Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 自定义视图上的手势检测器_Android_Gesturedetector - Fatal编程技术网

Android 自定义视图上的手势检测器

Android 自定义视图上的手势检测器,android,gesturedetector,Android,Gesturedetector,我定义了一个类,该类扩展了gesturedector.SimpleOnGestureListener,并重写了onDown和onFling方法 class MyGestureDetector extends GestureDetector.SimpleOnGestureListener { @Override public boolean onDown(MotionEvent e) { // TODO Auto-generated method stub

我定义了一个类,该类扩展了
gesturedector.SimpleOnGestureListener
,并重写了
onDown
onFling
方法

class MyGestureDetector extends GestureDetector.SimpleOnGestureListener {

    @Override
    public boolean onDown(MotionEvent e) {
        // TODO Auto-generated method stub
        return super.onDown(e);
    }

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
            float velocityY) {
        // TODO Auto-generated method stub

        Toast.makeText(PersianDatePicker.this.getContext(),
                "fling " + velocityX + " - " + velocityY, Toast.LENGTH_LONG)
                .show();

        return super.onFling(e1, e2, velocityX, velocityY);
    }
}
我还定义了
GestureDetectorCompat

@Override
public boolean onTouchEvent(MotionEvent event) {

    mDetector.onTouchEvent(event);

    return super.onTouchEvent(event);
}

我在一个活动中测试了它,效果很好。我想在自定义视图中使用它,但它不起作用!我没有错误。

在自定义视图中,尝试以下操作:

@Override
public boolean onTouchEvent(MotionEvent event) {
    if (mGestureDetector.onTouchEvent(event)) {
        return true;
    }    

    return super.onTouchEvent(event);
}
或者更简洁地说:

@Override
public boolean onTouchEvent(MotionEvent event) {
    return mGestureDetector.onTouchEvent(event) || super.onTouchEvent(event);
}

如果我在视图(而不是视图的子类化)上设置的
onTouch
方法的
View.OnTouchListener()
中,我如何调用
super.onTouchEvent(事件)
因为在这种情况下,
super
将引用
OnTouchListener
?@Suragch-所以您有一个纯
视图
,用于实现某种触摸响应逻辑?您可以将视图作为一个注入值传递给您的touch listener,然后它可以从中调用视图的
onTouchEvent
,或者您可以放弃所有这些,完全在listener中处理触摸逻辑。采用哪种方法取决于什么适合您的应用程序。是的,这就是我要问的。谢谢。工程团队已修复此问题,相应的文档将在将来更新。您可以在工程团队处查看更多信息。工程团队已修复此问题,相应的文档将在将来更新。