我需要在一个以上的视图中检测不同的手势。我的观点需要能够接收点击,双击和拖动事件。我尝试了手势探测器,但我的实现只显示了全局手势事件,我无法将这些事件连接到特定视图。
在我的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;
}
}
有人有建议吗? 谢谢!
答案 0 :(得分:2)
要使其正常工作,请将手势直接附加到每个视图,然后您可以使用不同的实现。
答案 1 :(得分:1)
然后在您的视图上添加onTouchEventListenrer。
如果这不起作用,那么正确的方法是:通过自己实现手势监听器(点击和拖动不应该那么难)并使用intercept touch events。