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中内容的偏移量是累加的。