android-检测不同视图上的手势

android-检测不同视图上的手势,android,multi-touch,gestures,Android,Multi Touch,Gestures,我需要在多个视图上检测不同的手势。我的视图需要能够接收点击、双击和拖动事件。我尝试了手势检测器,但我的实现只显示全局手势事件,无法将这些事件连接到特定视图 在my activity.onCreate中: dthandler = new DoubleTapHandler(); mDetector = new GestureDetector(this,dthandler); gestureListener = new View.OnTouchListener() {

我需要在多个视图上检测不同的手势。我的视图需要能够接收点击、双击和拖动事件。我尝试了手势检测器,但我的实现只显示全局手势事件,无法将这些事件连接到特定视图

在my activity.onCreate中:

    dthandler = new DoubleTapHandler();
    mDetector = new GestureDetector(this,dthandler);
    gestureListener = new View.OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {
        Log.d("myLog","touch");
        mDetector.onTouchEvent(event);
        return false;
    }
};
在我的活动中,我覆盖dispatchTouch功能:

@Override 
      public boolean dispatchTouchEvent(MotionEvent me){ 
        this.mDetector.onTouchEvent(me);
       return super.dispatchTouchEvent(me); 
      }
以下是我尝试将touchevent与我的视图连接起来的方式:

prod.setOnTouchListener(this.gestureListener);
我的DoubleTapHandler:

public class DoubleTapHandler implements OnDoubleTapListener, OnGestureListener {
        private ProductView relatedView;

        @Override
        public boolean onDoubleTapEvent(MotionEvent e) {   
            Log.d("myLog", "onDoubleTapEvent");
            Log.d("myLog",""+e.getSource());
            return false;                      
        }

        @Override
        public boolean onDoubleTap(MotionEvent e) {
            Log.d("myLog", "onDoubleTap"+relatedView);
            return false;
        }

        @Override
        public boolean onSingleTapConfirmed(MotionEvent e) {
            Log.d("myLog", "singletap");
            return false;
        }
}
有人有什么建议吗?
谢谢

要使其正常工作,请将手势直接附加到每个视图,然后您可以有不同的实现。

疯狂的想法。在某个视图上创建一个全局手势侦听器,将它们全部封装起来。并在所有视图上手动调用dispatchTouchEvent。这很棘手,但可以奏效

然后在视图上添加OnTouchEventListener


如果这不起作用,那么正确的方法是:自己实现手势侦听器(轻敲和拖动不应该那么困难)并与一起工作。

你做了prod.setOnTouchListener(),你也可以对特定视图这样做,以使它们对你的手势做出反应。是的,我做了(prod是我的观点之一)。但我没有收到任何关于这一观点的暗示。我刚刚收到OnTouch事件。尝试用onTouchEvent()替换dispatchTouchEvent(),同时看看您是否介意添加一些代码来演示如何执行?事实上,这个问题已经提出了3年,而且大部分内容都已经过重新分解和优化,但无论如何,在原始问题代码中,不重写dispatchTouchEvent就足够了,而重写onTouchEvent就足够了,它应该作为一个符咒工作。