Android中滾動的實現

來源:互聯網
上載者:User

Android中滾動的實現

1.基礎類View已經實現了大部分的滾動需要的基本支援

1)scrollBy,scrollTo

  將View滾動到指定位置,其實就是通過記錄mScrollX和mScrollY並觸發重新繪製來完成

2)awakenScrollBars

  觸發捲軸的繪製

3)setVerticalScrollbarEnabled,setHorizontalScrollbarEnabled,setScrollbarFadingEnabled,

  setHorizontalFadingEdgeEnabled,setVerticalFadingEdgeEnabled,setScrollbarStyle來控制

  Scroll

4)getScrollX,getScrollY擷取當前的offset

5)定義computeScroll給ViewGroup::drawChild調用,衍生類別如果要實現滾動效果,重載這個介面

6)和滾動比較有關的兩個參數,螢幕的寬和高,getHeight(),getWidth()

7)onScrollChanged通知滾動result,衍生類別可以重載,對滾動result作出響應

2.通常引進Scroller或者類似的機制來實現平滑的滾動效果(比如滑屏操作)

1)通過Scroller::startScroll或者Scroller::fling初始化起始座標,duration等

2)在類的computeScroll中調用Scroller::computeScrollOffset來計算即時的位置mCurrX,mCurrY,將這兩個

     值賦給mScrollX,mScrollY。因為是自己修改mScrollX和mScrollY而不是通過View的scrollTo,scrollBy,所以

    自動調用onScrollChanged

3)調用invalidate或者postInvalidate來觸發刷屏操作,重新繪製的時候因為mScrollX和mScrollY的改變,實現

     了滑動的效果

3.程式設計上一般結合onInteceptTouchEvent和onTouchEvent

如果ActionDown後再來ActionMove,且兩者座標出現移動,則讓程式進入Scrolling狀態,在ActionMove的時候調用scrollTo或者scrollBy

如果ActionDown後來ActionUp,且速度超過指定速度,則進行fling操作

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.