我想检测一个名为belowContainer的RelativeLayout上的fling-gestures,我的代码如下:
// 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;
}
});
我的应用程序注册下面的容器onTouch很好,但不知何故没有检测到甩动手势(日志只显示“点击!”而没有别的)。怎么样?
答案 0 :(得分:2)
您是在设备上还是在模拟器中进行测试?
我的代码中没有问题。下面的容器是否足够大,以便你有足够的空间做出一个惊人的手势?你有任何可能“拦截”触摸事件的观点吗?
我建议您记录手势监听器可能捕获的所有其他方法,以便您知道是否正在接受其他手势。
您也可以尝试从活动中传递onTouchEvents,而不是从您的视图中传递...这样可以更容易地捕获手势事件(只是为了确保一切正常!)
(覆盖Activity.onTouchEvent
并将事件传递给手势检测器。