我在这个 Android 应用程序上实现了一个 SimpleOnGestureListener,它是基本实现并且一切正常:
该类实现了 OnTouchListener
,我将它设置为正确 View 的 TouchListener,在触摸事件上我调用了我的 SimpleOnGestureListener 实例
@Override
public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
在我的 fling 回调中,我记录了 velocityY(应用程序使用了一些向下滑动的手势)
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY){
Log.d(TAG, "velocityY = " + velocityY);
... some code ...
}
该方法被调用,我在我的日志中看到值。
问题在于,对于向下飞行的 Nexus 4 和 Nexus 10,velocityY 是正值,而对于 Nexus 7,它是负值。
我知道有人会建议使用 e2.getY - e1.getY
(或原始的)但它们并不完全可靠,因为愚蠢的用户可能(并且会)向下拖动 View 然后扔掉它,但差异仍然是正的。
那么问题来了:有没有办法查询系统这个东西的方向是什么?
最佳答案
所以我找出了问题的原因,很快就会发布一个新问题,可能是解决方法。
问题是我使用 onScroll() 在屏幕上使用 View.offsetTopAndBottom 上下移动 View 随着位置的变化,VelocityTracker 变得完全疯狂
我会进一步研究,看看我是否可以尝试使用 VT,或者我是否可以推出自己的解决方法,但是,是的,这就是原因!
关于android - SimpleOnGestureListener onFling 速度方向问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18915011/