我想在一个名为belowContainer的RelativeLayout上检测手势,我的代码如下所示:
// 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;
}
});
我的应用程序注册了belowContainer onTouch正常,但是以某种方式未检测到挥动手势(日志仅显示“已单击!”,而没有其他显示)。怎么会?
最佳答案
您是在设备上还是在仿真器中进行测试?
我看不到您的代码有问题。 belowContainer是否足够大,以便您有足够的空间摆出手势?您内部是否存在任何可能“拦截”触摸事件的视图?
我建议您记录手势侦听器可能捕获的所有其他方法,以便您知道是否正在获取其他手势。
您还可以尝试从 Activity 而不是从视图传递onTouchEvents……这样一来,捕获手势事件会更容易(只是确保一切正常!)
(重写Activity.onTouchEvent
并将事件传递给手势检测器。