您的位置:首页 > 移动开发 > Android开发

Android开源框架分析1—下拉刷新&加载更多实现方式详解

2016-08-19 08:21 561 查看
之前项目中用过一些下拉刷新&加载更多的框架,但是只知道怎么用,没去看过他们怎么实现的。这两天抽空看了些博客,自己也找了些开源框架看了下,对下拉刷新&加载更多有个初步的认识,在这里和大家分享下。

本文的诞生离不开Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能Android打造(ListView、GridView等)通用的下拉刷新、上拉自动加载的组件johannilsson/android-pulltorefresh给RecyclerView最纯粹的下拉刷新和上拉加载更多Aspsine/SwipeToLoadLayout等。

1.下拉刷新

下拉刷新的实现一般是在需要下拉刷新的控件上方埋伏一个header,一般情况下,它是隐藏的,等到待刷新的控件被拉到达刷新条件时,再把它显示出来。布局结构如图:



对下拉刷新来说,一般分四种状态:PULL_TO_REFRESH(下拉),RELEASE_TO_REFRESH(释放以刷新),REFRESHING(正在刷新),REFRESH_FINISHED(刷新完成/无需刷新)。可以看出,一次刷新的状态渐变过程也是从“下拉“开始到“刷新完成“结束。前三种状态对应下UI如图:



刷新完成/无需刷新就是正常的header不可见,读者应该可以自行脑补。

对手势的判断,可以在contentView的OnTouchListener的onTouch中完成,也可以通过复写contentView的外部布局控件的onTouchEvent方法实现,顺便可以复写onInterceptEvent实现定制的事件分发。

现在谷歌官方提供了一个下拉刷新的框架SwipeRefreshLayout ,集成在sdk里面,相较于传统的刷新效果,官方给了一些更有设计感的效果,大家可以使用感受下。

下拉刷新涉及的大概就说完了,其中还是有很多细节,大家自行看代码体会。

2. 加载更多

加载更多的实现方式根据博主的观察和理解,主要分为两类:

1. 和下拉刷新实现方式类似的,外层布局控件在底部添加加载更多的控件,滑倒底部的时候显示控件,其他情况隐藏控件。如图


2. 对于listview,recyclerview这些加载更多常见的控件,加载更多以footerView的形式存放,需要显示的时候可见,不需要的时候INVISIBLE。

按博主的使用观察,这两种方式的UI效果略有不同。第一种包裹控件的方式,在隐藏加载更多控件时,原有的内容下沉到屏幕最下方,新加载出来的内容除非手动设置向上滚动,不会自动显示在屏幕上。对于给listview和recyclerview添加footerView这种方式,交互更友好,footerView消失后,原先footerView占有的布局区域,自动显示的新加载的数据内容。观察了下各大主流的APP,加载更多的效果一般是第二种。当然第一种有它的优势,它与contentView无关,隶属于外围包裹布局。所以通用性很好。contentView可以用任何你想执行加载更多的控件替代,不局限于listview等。

GitHub中Aspsine/SwipeToLoadLayout框架,基于第一种方式实现。当你要简单纯净的加载更多,自添加footerview即可,要注意的问题是,初期内容少,未布满一屏时,需要将footerView隐藏

相比于下拉刷新,加载更多的状态判断少了很多,监测是否滑倒底部,是则加载更多,否则不管。这里也不过多阐述,看下代码便一目了然。这里推荐一个库给大家UltimateRecyclerView,交互效果比较美丽。

最后

简易版本的下拉刷新&加载更多,一般实现采用SwipeRefreshLayout实现下拉刷新,然后footerView加载更多,方便又快速。

很惭愧,做了一点微小的贡献!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android
相关文章推荐