控件的滑動是通過調用兩個方法實現的,一個是滑動到指定的座標位置(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方法。回到第二步循環,直至滑動到指定的結束位置座標。