4

我在这个 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 ...
}

该方法被调用,我在我的日志中看到了值。

问题在于,对于 Nexus 4 和 Nexus 10 来说,向下抛掷的速度 Y 是正值,而对于 Nexus 7,它是负值。

我知道有人会建议使用e2.getY - e1.getY(或原始的),但它们并不完全可靠,因为愚蠢的用户可能(并且会)将视图向下拖动然后向上抛出,但差异仍然是积极的。

那么问题来了:有没有办法查询系统这个东西的方向是什么?

4

1 回答 1

1

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

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

我会再研究一些,看看我是否可以尝试 VT,或者我是否可以推出自己的解决方法,但是,是的,这就是原因!

于 2013-09-20T12:23:39.217 回答