我在这个 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
(或原始的),但它们并不完全可靠,因为愚蠢的用户可能(并且会)将视图向下拖动然后向上抛出,但差异仍然是积极的。
那么问题来了:有没有办法查询系统这个东西的方向是什么?