我正在尝试使用Opengl es 2进行简单的2D游戏。我正在使用GLSurfaceView。我试图检测视图上的fling手势,但它没有检测到任何东西。为什么是这样?以下是代码: -
试图在glsurfaceview内外声明手势检测器。
@SuppressWarnings("deprecation")
final GestureDetector gestureDetector = new GestureDetector(new GestureDetector.SimpleOnGestureListener() {
public void onLongPress(MotionEvent e) {
Log.d("", "Longpress detected");
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2,
float velocityX, float velocityY) {
Log.d("", "OnFling detected");
return super.onFling(e1, e2, velocityX, velocityY);
}
});
GLSurfaceView内部
@Override
public boolean onTouchEvent(MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
当我在表面上晃动时,它会检测到长按并打印调试信息,以便长按而不是甩掉。无论我在屏幕上做什么,它只是检测到长按..出了什么问题?
答案 0 :(得分:2)
在侦听器中包含onDown的覆盖:
@Override
public boolean onDown(MotionEvent event) {
return true;
}
这是因为所有手势都以onDown()消息开头。如果从onDown()返回false,默认情况下GestureDetector.SimpleOnGestureListener会执行false,系统会假定您要忽略其余的手势,而GestureDetector.OnGestureListener的其他方法永远不会被调用。这可能会在您的应用中造成意外问题。“
我很欣赏这并不能解释为什么你仍然设法检测到长版。如果以上解决了您的问题,也许这是一个不需要解决的难题......