#下拉刷新 在Api21以前,ListView和GridView的使用至關廣泛,包括下拉刷新咱們也可使用它,利用他的addHeaderView()和addFooterView()方法,或者使用父級中隱藏View的方式來實現;設計
在Api21以後,出現了RecyclerView和SwipeRefreshLayout,有人選擇了用二者相結合的方式來實現下拉刷新,在看到SwipeRefreshLayout的效果後,我以爲這比以前看到的任何刷新Loading的效果都要簡單直接,全部也提倡去替換現有的加載方式。事件
但是在使用過程當中,SwipeRefreshLayout和RecyclerView相結合後,SwipeRefreshLayout下拉後的阻尼效果也好像消失了同樣,拉動起來就沒那麼精神了,對於追求極致的我來講,是不能接受的。ip
總結:
1.下拉刷新最佳方式:SwipeRefreshLayout和ListView相結合;開發
2.RecyclerView適用於不須要添加任何刷新單純展現list數據的狀況;也能夠和ScrollerView相配合來展現效果。get
#上拉加載更多 加載更多相比下拉,其實簡單多了。經過監聽ListView的滑動距離即最後可見的position是不是最後一項來判斷(getLastVisiblePosition())。同步
#嵌套滑動 在代碼設計過程當中,應當特別注意,原則上嵌套滑動是不太好的設計方案,以前網上有不少這樣的設計案例。 ScrollView嵌套ListView,以後ListView沒法滑動,而後就重寫ListView的onMeasure()方法(NoScrollListView),在理解事件傳遞機制後就能大概明白,這種思路不太可取。it
因此在開發中,咱們能夠同步LinearLayout的addView()方法動態添加View。這樣就不會影響到滑動機制了。固然若是有比較多的item選項能夠考慮換一套思路:將ScrollView替換成ListView,經過addHeaderView的方式實現。io
固然在有了NestedScrollingParent,NestedScrollingParentHelper,NestedScrollingChild和NestedScrollingChildHelper以後嵌套滑動又有了新的思路。(下一章:嵌套滑動的解決方案)ast