SimpleOnGestureListener onFling速度方向问题

时间:2013-09-20 10:54:46

标签: android android-gesture gesturedetector onfling

我在这个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(或原始版本),但它们并不完全可靠,因为愚蠢的用户可能(并且会)将视图向下拖动然后将其抛弃,但差异仍然存在积极的。

所以问题是:有没有办法查询系统这方面的方向是什么?

1 个答案:

答案 0 :(得分:1)

所以我找到了问题的原因,并会很快发布一个新的问题,这可能是一个解决方法。

问题是我正在使用onScroll()使用View.offsetTopAndBottom在屏幕上上下移动视图,并且随着位置的变化,VelocityTracker变得非常疯狂

我会研究一下,看看我是否可以尝试VT,或者我是否可以自己解决这个问题,但是,这就是原因!