android - SimpleOnGestureListener onFling 速度方向问题

标签 android android-gesture gesturedetector onfling

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

相关文章:

android - MVVM跨+安卓 : DataBinding Context Menu options on ViewModel properties?

android - 将背景图像添加到自定义 View

android - 有没有办法在AndroidManifest文件中获取当前产品 flavor 的applicationId?

android - 在 ListView 上双指缩放

Android - 处理 ListView 项目上的单击和滑动

java - android语音识别API.System始终识别默认语言

android - onSingleTapConfirmed() 在 onDoubleTap() 之后引发

flutter - 有没有更好的方法来检查#flutter 中的左/右拖动?

flutter - 有没有什么可能的方法可以像在 flutter 朔迷离的Pageview中的Instagram故事一样,在右侧添加一个水龙头以前进,而在左侧单击一个水龙头来后退?

java - libgdx 中的 GestureDetector 和 InputListener