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

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

感谢bingaicao1提供的帮助。

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

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

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

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

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

使用方法:

Gradle:

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

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

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

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

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

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

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

设置Header和Footer:

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

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

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

其它设置:

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

手动刷新

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

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

mRecyclerView.setRefresh(true);

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

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

禁止刷新

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

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. 网页制作常用的CSS知识

    在制作网页中,我们会用到很多CSS的知识,在这里我简单的总结了一些. div    划分区块 ul,li 无序列表(配合划分区块) ol,li 有序列表 a 超链接标签 p 段落标签 h 标题标签 i ...

  2. 数据分析师入门|Python安装MAC版

    最近在学数据分析师入门课,看了大纲,感觉终于不再慌乱踩坑了,开始存档最粗暴版学习笔记,遇到停止的地方按照下文红字直接输入就OK,方便和我一样的小伙伴参考呀,老师讲的很适合我这种初学者,PUSH了很多资 ...

  3. druid数据库连接池整合到SpringMvc

    1.maven项目加入相关的依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>dru ...

  4. PDO 错误处理模式

    异常模式: $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 这个模式需要配合 try 使用 :一旦出错,就会: 1. ...

  5. CAD实现批量打印(网页版)

    主要用到函数说明: IMxDrawPrint::BatchPrintDialog 批量打印对话框,详细说明如下: 参数 说明 [in] IMxDrawResbuf* pParam 批量打印位置参数, ...

  6. 除了上万的月薪之外,还有什么理由让我们必须学Python?

    虽然目前的编程语言有很多,但是基础语法上的概念,本质上都是相通的.可以做到一通百通.所以没有必要为了学哪门语言纠结太多. python是目前市面上,我个人认为是最简洁&&最优雅& ...

  7. Mysql,Oracle使用rollup函数完成行列统计

    时间 2014-02-25 00:05:38  ITeye-博客 原文  http://53873039oycg.iteye.com/blog/2021445 主题 MySQLOracle数据库 昨天 ...

  8. SpringMVC+ajax返回JSON串

    一.引言 本文使用springMVC和ajax做的一个小小的demo,实现将JSON对象返回到页面,没有什么技术含量,纯粹是因为最近项目中引入了springMVC框架. 二.入门例子 ①. 建立工程, ...

  9. tcpdump用于抓取tcp数据包

    一.简单使用:-c监听次数.-v打印详情.host后接监听地址 1.1.监听 tcpdump -c -v host www.baidu.com 1.2.访问被监听的网址: 1.3.查看监听的数据:

  10. linux 命令终端提示符显示-bash-4.2#解决方法

    原地址:http://blog.csdn.net/liulihui1988/article/details/52796395 终端提示符显示的是-bash-4.2# 而不是root@主机名 + 路径的 ...