在 android.widget.Scroller 内检测滚动结束

Detect scroll end in android.widget.Scroller

我想根据 onTouchEvent 检查 MotionEvent.ACTION_UP 使用 android.widget.Scroller 检测用户何时停止滚动。当用户滚动一次它工作正常但是当用户快速滚动到特定位置时它表明用户滚动了很多次虽然我想将它检测为一个滚动。我怎样才能做到这一点?

@Override
public boolean onTouchEvent(MotionEvent event) {
    if(event.getAction() == MotionEvent.ACTION_UP) {
      if(mIsScrolling) {
        mIsScrolling = false;
        //
      }
    }
    mScaleDetector.onTouchEvent(event);
    return mGestureDetector.onTouchEvent(event);
}

你可以通过简单的数学计算

getCurrX(), getCurrY() methods returns current offset position x and y of scroller respectively

类似

getFinalX(), getFinalY() methods returns current offset positions x and y of scroller respectively

所以

if(getCurrY() == getFinalY()) // true means you reached end of the scroller

参考这里的文档Scroller