View中的scrollTo,scrollBy

scrollTo,scrollBy:

  指的是view中的内容的移动,而非view本身

ScrollTo:

public void scrollTo(int x, int y) {
        if (mScrollX != x || mScrollY != y) {
            int oldX = mScrollX;
            int oldY = mScrollY;
            mScrollX = x;
            mScrollY = y;
            invalidateParentCaches();
            onScrollChanged(mScrollX, mScrollY, oldX, oldY);
            if (!awakenScrollBars()) {
                postInvalidateOnAnimation();
            }
        }
    }
其中的mScrollX指的是相对于view的起始位置在X轴的偏移量;
      mScrollY指的是相对于View的起始位置在Y轴的偏移量。

故当scrollTo(x,y)中,当x>0时即将view中的内容向左偏移x;
                     当x<0时即将view中的内容向右偏移|x|;
                     当y>0时即将view中的内容向上偏移y;
                     当y<0时即将view中的内容向下偏移|y|。

scrollBy:

 public void scrollBy(int x, int y) {
        scrollTo(mScrollX + x, mScrollY + y);
    }

其和scrollTo不同的地方在于相对于view中内容的偏移量是累加的。

你可能感兴趣的:(View中的scrollTo,scrollBy)