滑动事件总结(刷新,加载更多,嵌套滑动)

我只是一个虾纸丫 提交于 2019-11-30 22:44:18

#下拉刷新   在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之后嵌套滑动又有了新的思路。(下一章:嵌套滑动的解决方案)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!