目前我的理解是Scroller类只是一个记录偏移量的辅助类,通过向里面不断存储当前位置坐标与上次位置坐标的X,Y方向的差值来向view反应实际操作,实际是调用view.scrollTo()。
@Override
public void computeScroll() {
//先判断mScroller滚动是否完成
if (mScroller.computeScrollOffset()) {
//这里调用View的scrollTo()完成实际的滚动
scrollTo(mScroller.getCurrX(), mScroller.getCurrY());
//必须调用该方法,否则不一定能看到滚动效果
postInvalidate();
}
super.computeScroll();
}
mScroller.computeScrollOffset()是用来判断当前scroll是否完成,完成则返回false