Android-onScroll手势检测器

Android-onScroll手势检测器,android,gesture,gesturedetector,onscroll,Android,Gesture,Gesturedetector,Onscroll,我想在滚动事件发生时实现onScroll。 但是,我不明白如何使用onScroll接收到的参数(MotionEvent e1、MotionEvent e2、float distanceX、float distanceY)从下至上检测滚动 我很乐意得到一些如何实现它的指南或一些例子 您应该能够使用distance参数来确定视图是向上还是向下滚动distanceY表示自上次调用onScroll()以来沿Y轴滚动的距离。如果distance Y的值大于零,则视图已从Y轴上的较低位置滚动到Y轴上的较高位

我想在滚动事件发生时实现onScroll。 但是,我不明白如何使用onScroll接收到的参数(MotionEvent e1、MotionEvent e2、float distanceX、float distanceY)从下至上检测滚动


我很乐意得到一些如何实现它的指南或一些例子

您应该能够使用
distance
参数来确定视图是向上还是向下滚动
distanceY
表示自上次调用
onScroll()
以来沿Y轴滚动的距离。如果
distance Y
的值大于零,则视图已从Y轴上的较低位置滚动到Y轴上的较高位置

@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
    if (distanceY > 0) {
        // Scrolled upward
        if (e2.getAction() = MotionEvent.ACTION_UP) {
            // The pointer has gone up, ending the gesture
        }
    }
    return false;
}

注意:我还没有测试
MotionEvent.ACTION\u UP
是否可以解决滚动结束时检查的问题,但理论上它似乎是可行的。另请注意,如果
MotionEvent
的操作设置为
MotionEvent,则从技术上讲,手势也可能会结束。操作\u取消

谢谢您的回答。我需要考虑运动事件吗?它们的作用是什么?
MotionEvent
s包含更多关于正在执行的运动的细粒度数据,例如触摸状态
e1
是启动滚动的第一个向下运动事件(通常在滚动期间保持不变),而
e2
是触发当前
onScroll
的移动运动事件。您可以在两个运动事件上调用
getY
来计算Y的变化,但是
distanceY
应该能够更简单地为您提供相同的解决方案。很好,我理解。非常感谢。如何检测滚动是否已结束?因为该方法在滚动过程中调用了多次。怀疑它是否对您有用,但很可能对未来的读者有用<滚动时调用code>onScroll,抬起手指后调用
onFling