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();
}
}
}
scrollBy()的源码
public void scrollBy(int x, int y) {
scrollTo(mScrollX + x, mScrollY + y);
}
scrollTo()和scrollBy()都是对View内容进行移动的方法,scrollBy()内部调用了scrollTo()方法
首先,调用scrollTo()和scrollBy()移动的都是View的内容,而非View本身
其次,所传的参数x,y都是位置的偏移量,而非坐标点
调用scrollTo()的偏移量代表的是控件内容相对于初始化时位置的偏移量
而调用scrollBy()的偏移量代表的是控件内容相对于上一次偏移结果的偏移量
如果需要控件内容向左移动,需要给x传正值,向右移动传负值
如果需要控件内容向上移动,需要给Y传正值,向下移动传负值