private boolean startScrollIfNeeded(final int y){
  final int deltaY=y - mMotionY;
  final int distance=Math.abs(deltaY);
  final boolean overscroll=false;
  if (overscroll || distance > mTouchSlop) {
    if (overscroll) {
      mMotionCorrection=0;
    }
 else {
      mTouchMode=TOUCH_MODE_SCROLLING;
      mMotionCorrection=deltaY > 0 ? mTouchSlop : -mTouchSlop;
    }
    setPressed(false);
    View motionView=getChildAt(mMotionPosition - mFirstPosition);
    if (motionView != null) {
      motionView.setPressed(false);
    }
    final ViewParent parent=getParent();
    if (parent != null) {
      parent.requestDisallowInterceptTouchEvent(true);
    }
    scrollIfNeeded(y);
    return true;
  }
  return false;
}

private boolean startScrollIfNeeded ( final int y ) { final int deltaY = y - mMotionY ; final int distance = Math . abs ( deltaY ) ; final boolean overscroll = false ; if ( overscroll || distance > mTouchSlop ) { if ( overscroll ) { mMotionCorrection = 0 ; } else { mTouchMode = TOUCH_MODE_SCROLLING ; mMotionCorrection = deltaY > 0 ? mTouchSlop : - mTouchSlop ; } setPressed ( false ) ; View motionView = getChildAt ( mMotionPosition - mFirstPosition ) ; if ( motionView != null ) { motionView . setPressed ( false ) ; } final ViewParent parent = getParent ( ) ; if ( parent != null ) { parent . requestDisallowInterceptTouchEvent ( true ) ; } scrollIfNeeded ( y ) ; return true ; } return false ; }
starts a scroll that moves the difference between y and our last motions y if it ' s a movement that represents a big enough scroll .
