目前 Android 开发中关于下拉刷新和上拉加载的最佳实践是什么?

看了很多库,大多数是很多年都没有更新的,甚至对 RecyclerView 支持也很有限,且大多数项目侵入性很强。官方 SwipeRefreshLayout 的话,样式是不可以定制的,且不支持加载更多;通过监听 RecyclerView 滚动到底来加载的话,实际效果也是不理想的。

目前自己项目是通过 adapter 控制最后一条数据,通过不同的 Recyclerview ViewType 来显示加载中,没有更多数据的,但是感觉这部分不适合交给 adapter 来做,不知道大家现在在项目中在使用的是什么方案,或者有没有什么比较新的、易扩展定制的库?

阅读 8.3k
3 个回答

一些值得学习的几个下拉刷新上拉加载开源库

功能齐全的AnimRefreshRecyclerView

  • 根据列表的不同效果选择不同的布局管理器
  • 根据不同的布局管理器设置分割线:
  • 设置Header和Footer
  • 手动刷新

AnimRefreshRecyclerView下拉刷新上啦加载效果

项目地址:

https://github.com/shichaohui...

XRefreshView支持各种各种自定义

  • 松开加载更多的Recyclerview
  • 带Banner的Recyclerview
  • LinearLayout样式的Recyclerview
  • 自定义下拉图标

效果图

项目地址:

https://github.com/huxq17/XRe...

BGARefreshLayout-Android

开发者使用 该框架可以对各种控件实现多种下拉刷新效果、上拉加载更多以及配置自定义头部广告位

  • 新浪微博下拉刷新风格(可设置各种状态是的文本,可设置整个刷新头部的背景)
  • 慕课网下拉刷新风格(可设置其中的 logo 和颜色成自己公司的风格,可设置整个刷新头部的背景)
  • 美团下拉刷新风格(可设置其中的图片和动画成自己公司的风格,可设置整个刷新头部的背景)
  • 类似 qq 好友列表黏性下拉刷新风格(三阶贝塞尔曲线没怎么调好,刚开始下拉时效果不太好,可设置整个刷新头部的背景)

效果图:


项目地址:

https://github.com/bingoogola...

TwinklingRefreshLayout

  • 支持下拉刷新和上拉加载的RefreshLayout
  • 自带越界回弹效果
  • 支持RecyclerView
  • 支持AbsListView,
  • 支持ScrollView
  • 支持WebView

    效果图:

项目地址:

https://github.com/lcodecorex...

Android智能下拉刷新框架-SmartRefreshLayout

  • 支持所有的 View(AbsListView、RecyclerView、WebView....View) 和多层嵌套的视图结构
  • 支持自定义并且已经集成了很多炫酷的 Header 和 Footer (图).
  • 支持和ListView的同步滚动 和 RecyclerView、AppBarLayout、CoordinatorLayout 的嵌套滚动 NestedScrolling.
  • 支持在Android Studio Xml 编辑器中预览 效果(图)
  • 支持分别在 Default(默认)、Xml、JavaCode 三个中设置 Header 和 Footer.
  • 支持自动刷新、自动上拉加载(自动检测列表惯性滚动到底部,而不用手动上拉).
  • 支持通用的刷新监听器 OnRefreshListener 和更详细的滚动监听 OnMultiPurposeListener.
  • 支持自定义回弹动画的插值器,实现各种炫酷的动画效果.
  • 支持设置主题来适配任何场景的App,不会出现炫酷但很尴尬的情况.
  • 支持设置多种滑动方式来适配各种效果的Header和Footer:平移、拉伸、背后固定、顶层固定、全屏
  • 支持内容尺寸自适应 Content-wrap_content
  • 支持继承重写和扩展功能,内部实现没有 private 方法和字段,继承之后都可以重写覆盖
  • 支持越界回弹(Listview、RecyclerView、ScrollView、WebView...View)
  • 支持多点触摸,下拉、上拉各种手势冲突

image

项目地址:

https://github.com/scwang90/S...

一个好玩的FunGameRefreshView

效果图

项目地址

https://github.com/Hitomis/Fu...

MarkMjw/PullToRefresh

根据Maxwin的XListView改造而来,完善下拉刷新上拉加载更多的功能并实现自动刷新以及自动加载等功能, 并增加对ScrollView的支持

image

项目地址:

https://github.com/MarkMjw/Pu...

Android-PullToRefresh

Android-PullToRefresh是一个个功能强大,支持ListView、ExpandableListView、GridView、WebView、ScrollView、HorizontalScrollView、ViewPager、ListFragment

image

项目地址:

https://github.com/chrisbanes...

基于Google修改的google下拉控件SwipeRefreshLayout

项目地址:

https://github.com/baoyongzha...

image

BeerSwipeRefreshLayout

非常有创意的一个库

image

项目地址:

https://github.com/recruit-li...

PullLoadMoreRecyclerView

实现RecyclerView下拉刷新和上拉加载更多以及RecyclerView线性、网格、瀑布流效果演示

image

项目地址:

https://github.com/WuXiaolong...

一个古老的PullToRefreshAndLoad

项目效果:


项目地址:

https://github.com/jingchenUS...

方便调用的SuperRecycleView

  • 结合XrecyclerView 和BaseRecyclerViewAdapterHelper更加的方便的调用RecyclerView的下拉刷新跟上拉加载
  • 添加高仿微信通讯录模块以及美团地址选择模块


关于更多

2017上半年技术文章集合—184篇文章分类汇总

高级UI特效仿直播点赞效果—一个优美炫酷的点赞动画

一个实现录音和播放的小案例

NDK项目实战—高仿360手机助手之卸载监听

项目地址:

https://github.com/supercwn/S...

相信自己,没有做不到的,只有想不到的

技术+职场

下拉刷新我觉得谷歌官方的SwipeRefreshLayout其实可以满足条件了,上拉加载的话就不太清楚了,因为我暂时在项目中还没有用到

推荐问题
宣传栏