项目地址:https://github.com/shichaohui/AnimRefreshRecyclerView

项目中包括一个demo(普通Androidproject)和Android Library,感兴趣的同学能够自己下载源代码和Demo。

感谢bingaicao1提供的帮助。

效果预览,嗯…看起来有点卡。截图软件的问题:

上图中演示了三种不同的布局和下拉效果,三种布局和三种下拉效果能够通过Header的设置随意组合。

图中普通列表是ListView样式,没有设置Header和Footer,使用默认的下拉刷新和上拉载入。

宫格列表使用的是自己定义Header和Footer的下拉刷新和上拉上拉载入,并设置了下拉使放大的图片。

瀑布流列表使用的是自己定义Header和Footer的下拉刷新和上拉上拉载入。没有设置了下拉使放大的图片。使用默认的刷新动画。

使用方法:

Gradle:

  1. dependencies {
  2. compile 'com.android.support:recyclerview-v7:23.1.0'
  3. compile 'com.sch.rfview:AnimRefreshRecyclerView:1.0.6@aar'
  4. }

Eclipse的同学们能够自己下载源代码拷贝java文件到自己的project(别忘了引用RecyclerView的包哦)。

代码中的配置參考以下的使用方法代码片段,除了RecyclerView自带的方法,其它方法都是可选的。

依据列表的不同效果选择不同的布局管理器:

  1. // 使用重写后的线性布局管理器
  2. mRecyclerView.setLayoutManager(new AnimRFLinearLayoutManager(this));
  3. // 使用重写后的格子布局管理器
  4. mRecyclerView.setLayoutManager(new AnimRFGridLayoutManager(this, 2));
  5. // 使用重写后的瀑布流布局管理器
  6. mRecyclerView.setLayoutManager(new AnimRFStaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL));

依据不同的布局管理器设置切割线:

  1. // 设置列表布局的切割线
  2. mRecyclerView.addItemDecoration(new DividerItemDecoration(context,
  3. mAnimRFLinearLayoutManager.getOrientation(), true));
  4. // 设置网格或者瀑布流布局的切割线
  5. mRecyclerView.addItemDecoration(new DividerGridItemDecoration(context, true));

设置Header和Footer:

  1. // 头部
  2. headerView = LayoutInflater.from(this).inflate(R.layout.header_view, null);
  3. // 脚部
  4. footerView = LayoutInflater.from(this).inflate(R.layout.footer_view, null);
  5. // 加入头部和脚部,假设不加入就使用默认的头部和脚部(头部能够有多个)
  6. mRecyclerView.addHeaderView(headerView);
  7. // 设置头部的最大拉伸倍率,默认1.5f,必须写在setHeaderImage()之前
  8. mRecyclerView.setScaleRatio(2.0f);
  9. // 设置下拉时拉伸的图片。不设置就使用默认的
  10. mRecyclerView.setHeaderImage((ImageView) headerView.findViewById(R.id.iv_hander));
  11. mRecyclerView.addFootView(footerView);

能够通过addHeaderView()setHeaderImage()方法随意组合下拉效果,能够调用多次addHeaderView()方法加入多个头部,可是setHeaderImage()方法最多被调用一次。

最多调用一次addFootView()方法,即最多设置一个FooterView。

其它设置:

  1. // 设置刷新动画的颜色(可选)
  2. mRecyclerView.setColor(Color.RED, Color.WHITE);
  3. // 设置头部恢复动画的运行时间。默认500毫秒(可选)
  4. mRecyclerView.setHeaderImageDurationMillis(1200);
  5. // 设置拉伸到最高时头部的透明度。默认0.5f(可选)
  6. mRecyclerView.setHeaderImageMinAlpha(0.6f);
  7. // 设置适配器
  8. mRecyclerView.setAdapter(new MyAdapter());
  9. // 设置刷新和载入很多其它数据的监听,分别在onRefresh()和onLoadMore()方法中运行刷新和载入很多其它操作
  10. mRecyclerView.setLoadDataListener(new AnimRFRecyclerView.LoadDataListener() {
  11. @Override
  12. public void onRefresh() {
  13. // 开启线程刷新数据
  14. new Thread(new MyRunnable()).start();
  15. }
  16. @Override
  17. public void onLoadMore() {
  18. // 开启线载入很多其它数据
  19. new Thread(new MyRunnable()).start();
  20. }
  21. });

手动刷新

假设想第一次进入界面时就显示载入数据的动画。须要使用手动刷新的方法。

此方法须要在其它设置完毕后调用,详细使用能够看这里

  1. mRecyclerView.setRefresh(true);

在刷新和载入过很多其它完毕之后调用代码停止动画:

  1. // 刷新完毕后调用,必须在UI线程中
  2. mRecyclerView.refreshComplate();
  3. // 载入很多其它完毕后调用。必须在UI线程中
  4. mRecyclerView.loadMoreComplate();

禁止刷新

假设不想使用自带的刷新效果,而想要使用SwipRefreshLayout做刷新。可使用以下代码禁止自带的刷新效果

  1. mRecyclerView.setRefreshEnable(false);

Tips:

  • 若在使用过程中发现adapter.notifyDataSetChange()等更新数据的方法无效,可使用recyclerView.getAdapter()获取当前使用的Adapter,并使用获取到到Adapter更新数据。

    EDN

        欢迎大家提出改进建议和意见

带头尾和动画的下拉刷新RecyclerView的更多相关文章

  1. 带你实现开发者头条APP(五)--RecyclerView下拉刷新上拉加载

    title: 带你实现开发者头条APP(五)--RecyclerView下拉刷新上拉加载 tags: -RecyclerView,下拉刷新,上拉加载更多 grammar_cjkRuby: true - ...

  2. RecyclerView的下拉刷新和加载更多 动画

    下拉刷新和加载更多 1.https://github.com/jianghejie/XRecyclerView 2.http://blog.csdn.net/jabony/article/detail ...

  3. 下拉刷新控件(3)系统自带的下拉刷新控件SwipeRefreshLayout(推荐*)

    1,简介 The SwipeRefreshLayout should be used whenever the user can refresh the contents of a view via ...

  4. H5下拉刷新特效demo,动画流畅

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  5. [Swift通天遁地]二、表格表单-(4)使用系统自带的下拉刷新控件,制作表格的下拉刷新效果

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  6. Android 聊天表情输入、表情翻页带效果、下拉刷新聊天记录

    经过一个星期的折腾,最终做完了这个Android 聊天表情输入.表情翻页带效果.下拉刷新聊天记录.这仅仅是一个单独聊天表情的输入,以及聊天的效果实现.由于我没有写server,所以没有两方聊天的效果. ...

  7. Android PullToRrefresh 自定义下拉刷新动画 (listview、scrollview等)

    PullToRefreshScrollView 自定义下拉刷新动画,只需改一处. 以下部分转载自http://blog.csdn.net/superjunjin/article/details/450 ...

  8. 使用MJRefresh自定义下拉刷新,上拉加载动画

    有时候我们需要自己设置下拉刷新,上拉加载动画的实现,这里主要是记录下使用MJRefresh自定义下拉刷新,上拉加载动画..... 下拉刷新我们只需要继承MJRefreshGifHeader即可: 实现 ...

  9. mescroll.js简单的上拉加载、下拉刷新插件,带完整注释

    声明:本插件模仿自mescroll.js,随手所作,仅以注释提供思路,只实现了部分效果,且没有考虑兼容,有兴趣的朋友随意一看.api大家可参考mescroll.js API汇总一文. demo:点我下 ...

随机推荐

  1. C/C++ 标准输入、输出

    一.分类 1.标准输入输出 键盘输入,显示器输出.2.文件输入输出 以外存为对象,即硬盘.光盘等.3.串输入输出 对内存中指定空间进行输入输出. 二.c语言中的输入输出 #include <st ...

  2. Objective-C 是动态语言

    Objective-C 的动态性是由 runtime 相关的库赋予的. 当然其他语言也完全可以运行在一个 Runtime 库上而获得动态性,由于多数高级语言的诞生都对应着一种编译器,因此将编译器的特性 ...

  3. oauth 理解

    单点登录 对授权码模式的解读. 1. 用户访问客户端,客户端将请求认证服务器. 2. 用户选择是否给予客户端授权 3.用户授权后,认证服务器将用户导向客户端事先定义好的重定向的地址,同时会附上一个授权 ...

  4. sql中的日期时间处理

    每个数据库,不同的日期格式化: 1.mysql 2.sqlserver 使用Convert()函数: select convert(char(10),GetDate(),120) as Date 第3 ...

  5. Analysis Of The Causes Of Internal Symmetry Of Hydraulic Motor

    The main reasons why hydraulic motors have this symmetrical internal structure are as follows: The   ...

  6. vue 画二维码

    首先安装一下相关的插件 qrcode2 npm install --save qrcode2 然后在需要画二维码的页面引入一下 import QRCode from 'qrcode2' 最后在meth ...

  7. js+flash(as3)实现复制文字内容到剪切板实例

    /* SWFObject v2.2 swfobject.js */ var swfobject=function(){var D="undefined",r="objec ...

  8. 洛谷——P3918 [国家集训队]特技飞行

    P3918 [国家集训队]特技飞行 神犇航空开展了一项载客特技飞行业务.每次飞行长N个单位时间,每个单位时间可以进行一项特技动作,可选的动作有K种,每种动作有一个刺激程度Ci.如果连续进行相同的动作, ...

  9. [Luogu] P1441 砝码称重

    题目描述 现有n个砝码,重量分别为a1,a2,a3,……,an,在去掉m个砝码后,问最多能称量出多少不同的重量(不包括0). 题目分析 因为读错题WAWA大哭. 先dfs枚举选的砝码,满足条件时进行d ...

  10. 搭建分布式yarn

    1.在前一篇准备好Hadoop的基础上配置,链接 http://www.cnblogs.com/cici20166/p/6266367.html 2./etc/profile 配置环境变量 expor ...