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