我在这个Android应用程序上实现了一个SimpleOnGestureListener,它是基本的实现,并且它的工作正常:
该类实现OnTouchListener
并将其设置为TouchListener以获取正确的视图,触摸事件我调用我的SimpleOnGestureListener实例
@Override
public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
在我的回调中,我正在记录velocityY(应用程序正在使用一些向下滑动的手势)
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY){
Log.d(TAG, "velocityY = " + velocityY);
... some code ...
}
调用该方法,我在Log上看到了值。
问题是Nexus 4和Nexus 10向下飞行时,velocityY是一个正值,对于Nexus 7,它是一个负值。
我知道有人会建议使用e2.getY - e1.getY
(或原始版本),但它们并不完全可靠,因为愚蠢的用户可能(并且会)将视图向下拖动然后将其抛弃,但差异仍然存在积极的。
所以问题是:有没有办法查询系统这方面的方向是什么?
答案 0 :(得分:1)
所以我找到了问题的原因,并会很快发布一个新的问题,这可能是一个解决方法。
问题是我正在使用onScroll()使用View.offsetTopAndBottom在屏幕上上下移动视图,并且随着位置的变化,VelocityTracker变得非常疯狂
我会研究一下,看看我是否可以尝试VT,或者我是否可以自己解决这个问题,但是,这就是原因!