void scrollByInternal(int x,int y){
  int overscrollX=0, overscrollY=0;
  int hresult=0, vresult=0;
  consumePendingUpdateOperations();
  if (mAdapter != null) {
    eatRequestLayout();
    mRunningLayoutOrScroll=true;
    if (x != 0) {
      hresult=mLayout.scrollHorizontallyBy(x,mRecycler,mState);
      overscrollX=x - hresult;
    }
    if (y != 0) {
      vresult=mLayout.scrollVerticallyBy(y,mRecycler,mState);
      overscrollY=y - vresult;
    }
    if (supportsChangeAnimations()) {
      int count=mChildHelper.getChildCount();
      for (int i=0; i < count; i++) {
        View view=mChildHelper.getChildAt(i);
        ViewHolder holder=getChildViewHolder(view);
        if (holder != null && holder.mShadowingHolder != null) {
          ViewHolder shadowingHolder=holder.mShadowingHolder;
          View shadowingView=shadowingHolder != null ? shadowingHolder.itemView : null;
          if (shadowingView != null) {
            int left=view.getLeft();
            int top=view.getTop();
            if (left != shadowingView.getLeft() || top != shadowingView.getTop()) {
              shadowingView.layout(left,top,left + shadowingView.getWidth(),top + shadowingView.getHeight());
            }
          }
        }
      }
    }
    mRunningLayoutOrScroll=false;
    resumeRequestLayout(false);
  }
  if (!mItemDecorations.isEmpty()) {
    invalidate();
  }
  if (getOverScrollMode() != View.OVER_SCROLL_NEVER) {
    considerReleasingGlowsOnScroll(x,y);
    pullGlows(overscrollX,overscrollY);
  }
  if (hresult != 0 || vresult != 0) {
    onScrollChanged(0,0,0,0);
    if (mScrollListener != null) {
      mScrollListener.onScrolled(this,hresult,vresult);
    }
  }
  if (!awakenScrollBars()) {
    invalidate();
  }
}

void scrollByInternal ( int x , int y ) { int overscrollX = 0 , overscrollY = 0 ; int hresult = 0 , vresult = 0 ; consumePendingUpdateOperations ( ) ; if ( mAdapter != null ) { eatRequestLayout ( ) ; mRunningLayoutOrScroll = true ; if ( x != 0 ) { hresult = mLayout . scrollHorizontallyBy ( x , mRecycler , mState ) ; overscrollX = x - hresult ; } if ( y != 0 ) { vresult = mLayout . scrollVerticallyBy ( y , mRecycler , mState ) ; overscrollY = y - vresult ; } if ( supportsChangeAnimations ( ) ) { int count = mChildHelper . getChildCount ( ) ; for ( int i = 0 ; i < count ; i ++ ) { View view = mChildHelper . getChildAt ( i ) ; ViewHolder holder = getChildViewHolder ( view ) ; if ( holder != null && holder . mShadowingHolder != null ) { ViewHolder shadowingHolder = holder . mShadowingHolder ; View shadowingView = shadowingHolder != null ? shadowingHolder . itemView : null ; if ( shadowingView != null ) { int left = view . getLeft ( ) ; int top = view . getTop ( ) ; if ( left != shadowingView . getLeft ( ) || top != shadowingView . getTop ( ) ) { shadowingView . layout ( left , top , left + shadowingView . getWidth ( ) , top + shadowingView . getHeight ( ) ) ; } } } } } mRunningLayoutOrScroll = false ; resumeRequestLayout ( false ) ; } if ( ! mItemDecorations . isEmpty ( ) ) { invalidate ( ) ; } if ( getOverScrollMode ( ) != View . OVER_SCROLL_NEVER ) { considerReleasingGlowsOnScroll ( x , y ) ; pullGlows ( overscrollX , overscrollY ) ; } if ( hresult != 0 || vresult != 0 ) { onScrollChanged ( 0 , 0 , 0 , 0 ) ; if ( mScrollListener != null ) { mScrollListener . onScrolled ( this , hresult , vresult ) ; } } if ( ! awakenScrollBars ( ) ) { invalidate ( ) ; } }
does not perform bounds checking . used by internal methods that have already validated input .
