我有一个 GestureDetector.OnGestureListener 连接到一个 ListView。当用户向下滚动时,我试图监听滚动事件:

private GestureDetector.OnGestureListener mOnGesture = new GestureDetector.OnGestureListener() {
    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
    }
}

但是我看到了一个非常奇怪的“distanceY”值流:
distanceY: -417.02252  // <-- huh?
e1: null
e2: MotionEvent{4097ac08 action=2 x=233.6657 y=417.02252 pressure=0.79999995 size=0.33333334}

distanceY: 1.5640259
e1: null
e2: MotionEvent{4097ac08 action=2 x=233.6657 y=415.4585 pressure=0.79999995 size=0.33333334}

distanceY: 1.5640259
e1: null
e2: MotionEvent{4097ac08 action=2 x=233.6657 y=413.89447 pressure=0.79999995 size=0.40000004}

... rest of values are positive, as expected ...

第一个“distanceY”值为负(意外),但随后的都是正值。这有什么可以解释的?我每次都可以重现这种行为。

谢谢

最佳答案

distanceY 是当前和前一个 onScroll 事件之间的距离。由于这是第一个这样的事件,我假设它从零开始计算。

distanceY: ____-417.02252____  // Same value as...
e1: null
e2: MotionEvent{4097ac08 action=2 x=233.6657 y=____417.02252____ // ...here...

关于android - 滚动监听器-向下滚动的第一个 distanceY 始终为负?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12465540/

10-10 08:38
查看更多