控件的滑动是通过调用两个方法实现的,一个是滑动到指定的坐标位置(scrollTo),另一个是根据当前的坐标位置 滑动的相对距离(scrollBy)。
通过Scroller和computeScroll可以处理控件的平滑的过度到指定的最终位置。
computeScroll可以参考Scroller计算结果来影响scrollTo,scrollBy,从而使得滑动发生改变。
驱动过程:
1.Scroller.startScroll —> invalidate
2.invalidate —> onDraw —> draw —> computeScroll
3.Scroller.computeScrollOffset —> scrollTo —> invalidate
解释过程:
1.需要传入开始和结束的坐标Scroller.startScroll(l, t, r, b);或者是Scroller.startScroll(l, t, r, b, duration);然后调用invalidate方法刷新。
2.invalidate方法会驱动draw方法,draw方法会驱动computeScroll方法。
3.在computeScroll方法内部需要判断是否已经滑动到Scroller指定的结束位置坐标(判断需要调用Scroller.computeScrollOffset),如果没有,则继续滑动,滑动需要调用scrollTo方法(或是scrollBy方法),scrollTo会驱动invalidate方法。回到第二步循环,直至滑动到指定的结束位置坐标。