歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android中滾動的實現

Android中滾動的實現

日期:2017/3/1 10:23:47   编辑:Linux編程

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操作

Copyright © Linux教程網 All Rights Reserved