SimpleOnGestureListener.OnScroll在快速滚动时没有正确调用

时间:2014-08-25 07:11:20

标签: android

当用户从左向右滑动时,我需要更改图像;这就是我使用SimpleOnGestureListener检测ImageView上的滑动事件的原因。

在这个过程中,当我慢慢地滑动图像时,onScroll()方法会频繁调用并且每件事情都正常工作但是当我快速滑动这个图像时,onScroll()方法只调用了两次三次,请让我知道我应该使用什么方法来根据刷卡的速度调用onScroll()方法。

2 个答案:

答案 0 :(得分:3)

由于有很多细节要说,我在这里发布我的答案而不是添加评论。

onFling为您提供了四个有用的参数:两个MotionEvent和两个速度数。有了这些有用的信息,您可以在Scroller上致电fling。滚动对象将为您完成剩下的工作(例如,在一段时间后获取当前的x / y值)。

对于您的情况,您可以致电computeScrollOffsetgetCurrX/getCurrY来处理您的"滑动动画"。只需在视图的x / y到达边界时更改显示图像。

例如,假设您的指针向上位置为(0,0)且初始x速度为1000像素/秒。在500毫秒后,您拨打computeScrollOffset(它肯定会返回true)并且getCurrX可能会返回600(因为fling不会线性移动)。更改图像的确切时间取决于您

对于Scroller的详细用法,应该有很多例子。一个很好的例子肯定是official training lession

答案 1 :(得分:1)

我可以想到实现你想要的其他方式

onFling()为您提供XY的速度:如果它大于4000它被视为快速滚动,那么您可以为连续图像设置动画,效果就像快速刷卡一样。