PullToRefresh幾種實現方式

方案一:繼承想下拉刷新的View類(ListView|RecyclerView|ScrollView等),重寫dispatchTouchEvent或者onTouchEvent方法,改變頂部刷新RefreshView的LayoutParams.height。須要藉助Scroller類在手勢釋放的時候自動滾動。java

案例:ListViewForPath|FriendsCircleLisView|XRecyclerView|XListView 還有一種不是該變height而是改變paddingTop,案例老的網易新聞下拉刷新 還有johannilsson/android-pulltorefreshandroid

方案二:外層用LinearLayout包起來,最上面添加刷新View。設置LinearLayout的paddingTop=-RefreshView.measureHeight,在onTouchEvent中調用LinearLayout.scrollTo或者scrollBy方法滾動LinearLayout中的內容。須要藉助Scroller類在手勢釋放的時候自動滾動。git

案例:Android-PullToRefreshgithub

方案三:外層用FrameLayout包起來,RefreshView放最底層,想下拉刷新的View放在最上層。在FrameLayout中運用ViewDragHelper工具類拖動改變RefreshView的位置。工具

案例:天貓下拉刷新佈局

方案四:系統提供的下拉刷新方案http://pan.baidu.com/s/1eSNSnmE動畫

總結: 一、下拉刷新就是經過改變refreshView的位置或者大小或者padding來顯示不一樣的狀態spa

二、平滑滾動是經過Scroller或者利用動畫插值循環調用不停改變值實現(Android-PullToRefresh)繼承

三、各類基礎佈局值提供佈局樣式,本省並無什麼事件處理,因此不用擔憂事件的影響。事件

相關文章
相關標籤/搜索