Scroller與computeScroll處理滑動

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章