#下拉刷新 在Api21之前,ListView和GridView的使用相当普遍,包括下拉刷新我们也可以使用它,利用他的addHeaderView()和addFooterView()方法,或者使用父级中隐藏View的方式来实现;
在Api21之后,出现了RecyclerView和SwipeRefreshLayout,有人选择了用两者相结合的方式来实现下拉刷新,在看到SwipeRefreshLayout的效果后,我觉得这比之前看到的任何刷新Loading的效果都要简单直接,所有也提倡去替换现有的加载方式。
可是在使用过程中,SwipeRefreshLayout和RecyclerView相结合后,SwipeRefreshLayout下拉后的阻尼效果也好像消失了一样,拉动起来就没那么精神了,对于追求极致的我来说,是不能接受的。
总结:
1.下拉刷新最佳方式:SwipeRefreshLayout和ListView相结合;
2.RecyclerView适用于不需要添加任何刷新单纯展示list数据的情况;也可以和ScrollerView相配合来展示效果。
#上拉加载更多 加载更多相比下拉,其实简单多了。通过监听ListView的滑动距离即最后可见的position是否是最后一项来判断(getLastVisiblePosition())。
#嵌套滑动 在代码设计过程中,应当特别注意,原则上嵌套滑动是不太好的设计方案,之前网上有很多这样的设计案例。 ScrollView嵌套ListView,之后ListView无法滑动,然后就重写ListView的onMeasure()方法(NoScrollListView),在理解事件传递机制后就能大概明白,这种思路不太可取。
所以在开发中,我们可以同步LinearLayout的addView()方法动态添加View。这样就不会影响到滑动机制了。当然如果有比较多的item选项可以考虑换一套思路:将ScrollView替换成ListView,通过addHeaderView的方式实现。
当然在有了NestedScrollingParent,NestedScrollingParentHelper,NestedScrollingChild和NestedScrollingChildHelper之后嵌套滑动又有了新的思路。(下一章:嵌套滑动的解决方案)
来源:oschina
链接:https://my.oschina.net/u/1011897/blog/688242