我正在尝试编写一个检测和处理手势的程序 . 我设法使onFling和onScroll事件工作(这些事件在侦听器类和Activity中实现) . 但是每次我进行滑动(onFling)时,onScroll()函数内的代码也会被执行 . 例如:
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
{
//do something here, for example change background color to red
return true;
}
@Override
public boolean onScroll (MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
{
//do something, for example vibrate
return true;
}
在这种情况下,当我滚动设备振动,这没关系 . 但是当我进行滑动并且onFling被执行时,颜色变为红色,但它也会振动,我不希望这样 .
是否有任何方法可以防止这种情况发生,因此当滑动发生时,只有onFling()事件中的代码被执行而onScroll()仅在滚动真正发生时触发,或者如果没有onScroll(),则处理简单的手指移动和单独滑动手势?
编辑:我正在使用GestureDetector类 .
1 回答
我'm guessing you'正在使用
GestureDetector
.在它之前发生滚动不会发生抛出,这就是为什么你在
onFling(...)
之前收到onScroll(...)
回调的原因 . 当用户将手指抬离屏幕(ACTION_UP
)并且已生成足够的速度时,将调用onFling(...)
.