#下拉刷新 在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