code: public boolean continueSettling(boolean deferCallbacks) {
          if (mDragState == STATE_SETTLING) {
              boolean keepGoing = mScroller.computeScrollOffset();
              final int x = mScroller.getCurrX();
              final int y = mScroller.getCurrY();
              final int dx = x - mCapturedView.getLeft();
              final int dy = y - mCapturedView.getTop();
              if (dx != 0) {
                  ViewCompat.offsetLeftAndRight(mCapturedView, dx);
              }
              if (dy != 0) {
                  ViewCompat.offsetTopAndBottom(mCapturedView, dy);
              }
              if (dx != 0 || dy != 0) {
                  mCallback.onViewPositionChanged(mCapturedView, x, y, dx, dy);
              }
              if (keepGoing && x == mScroller.getFinalX() && y == mScroller.getFinalY()) {
                  // Close enough. The interpolator/scroller might think we're still moving
                  // but the user sure doesn't.
                  mScroller.abortAnimation();
                  keepGoing = false;
              }
              if (!keepGoing) {
                  if (deferCallbacks) {
                      mParentView.post(mSetIdleRunnable);
                  } else {
                      setDragState(STATE_IDLE);
                  }
              }
          }
          return mDragState == STATE_SETTLING;
      }
docs: Move the captured settling view by the appropriate amount for the current time.
  If <code>continueSettling</code> returns true, the caller should call it again
  on the next frame to continue.
  
  @param deferCallbacks true if state callbacks should be deferred via posted message.
  Set this to true if you are calling this method from
  {@link android.view.View#computeScroll()} or similar methods
  invoked as part of layout or drawing.
  @return true if settle is still in progress