废话不多说,先上代码
public void smoothScrollTo(int destX, int destY) {
int scrollX = getScrollX();
int deltaX = destX - scrollX;
scroller.startScroll(scrollX, 0, deltaX, 0, 1000);
invalidate();
}
@Override
public void computeScroll() {
if (scroller.computeScrollOffset()) {
scrollTo(scroller.getCurrX(), scroller.getCurrY());
postInvalidate();
}
}
Scroller的工作流程图
原理:Scroller并不能实现View的滑动,它需要配合View的computeScroll()方法才能完成弹性滑动的效果,它不断的让View重绘,而每一次重绘距滑动起始时间会有一个时间间隔,通过这个时间间隔scroller就可以得到View当前的滑动位置,知道了滑动位置就可以通过scrollTo()方法来完成小幅度滑动就组成了弹性滑动,这就是Scroller的工作机制。