Android研究之手PullToRefresh(ListView GridView 下拉刷新)使用具体解释

news/2024/7/8 10:31:27


群里一哥们今天聊天偶然提到这个git hub上的控件:pull-to-refresh ,有兴趣的看下,样例中的功能极其强大,支持非常多控件。本篇博客具体给大家介绍下ListView和GridView利用pull-to-rerfesh 实现下拉刷新和上拉载入很多其它。对布局不清楚的能够看Android研究自己定义ViewGroup实现FlowLayout 具体解释。

1、ListView下拉刷新高速入门

pull-to-refresh对ListView进行了封装,叫做:PullToRefreshListView,使用方法和listview没什么差别,以下看demo.

布局文件:

声明了一个PullToRefreshListView,里面全部的属性都是ListView的,没有不论什么其它属性,当然了PullToRefreshListView也提供了非常多配置的属性,后面会具体介绍。

Activity的代码:

代码极其简单,得到PullToRefreshListView控件,然后像ListView一样设置数据集。当然了,我们有下拉刷新,所以必须设置下拉刷新的回调:

setOnRefreshListener(new OnRefreshListener<ListView>(){}

我们在回调中模拟了一个异步任务,载入了一个Item。

效果图:

Android研究之手PullToRefresh(ListView GridView 下拉刷新)使用具体解释 (五十一) - 第1张  | 成功智慧网-专注游戏编程开发!

下拉时,运行我们的GetDataTask任务,任务运行完毕后在onPostExecute中调用mPullRefreshListView.onRefreshComplete();完毕刷新。

是不是分分钟实现下拉刷新。当然了,你可能会有疑问,下拉刷新的指示器上的文字能够自己定义吗?那个图片能够换成箭头吗?说好的上拉载入很多其它呢?后面会一一加入~

2、加入上拉载入很多其它

如过希望实现上拉载入很多其它,那么首先须要在布局文件的声明属性中加入一个属性,用于指定眼下的下拉模式:

我们加入了一个属性:ptr:ptrMode=”both” ,意思:上拉和下拉都支持。

可选值为:disabled(禁用下拉刷新),pullFromStart(仅支持下拉刷新),pullFromEnd(仅支持上拉刷新),both(二者都支持),manualOnly(仅仅同意手动触发)

当然了,假设你不喜欢在布局文件里指定,全然能够使用代码设置,在onCreate里面写:mPullRefreshListView.setMode(Mode.BOTH);//设置你须要的模式

设置了模式为双向都支持,当然必须为上拉和下拉分别设置回调,请看以下的代码:

和第一段的代码仅仅有一个地方有差别,可能非常难发现:
mPullRefreshListView.setOnRefreshListener(new OnRefreshListener2<ListView>(){});注意这里的接口类型是OnRefreshListener2,多了个2,和上面的不一样,这个接口包括两个方法,一个上拉回调,一个下拉回调。好了,这样我们就成功加入了上拉与下拉,而且分别能够控制其回调代码。

效果图:

Android研究之手PullToRefresh(ListView GridView 下拉刷新)使用具体解释 (五十一) - 第2张  | 成功智慧网-专注游戏编程开发!

咋样,是不是也非常easy~注:假设你的上拉和下拉需求是运行一样的代码,那么你能够继续注冊OnRefreshListener接口,上拉和下拉都会运行同一个方法。

接下来介绍怎样使用带下拉刷新和载入很多其它的的GridView和自己定义样式~

3、带下拉和上拉的GridView ( PullToRefreshGridView )

相同的pull-to-refresh把GridView封装为:PullToRefreshGridView 。使用方法和PullToRefreshListView一摸一样~

首先看主布局文件:

PullToRefreshGridView 的item的布局文件:

接下来就是Activity的代码了:

基本上上例没有不论什么差别,直接看效果图吧:

Android研究之手PullToRefresh(ListView GridView 下拉刷新)使用具体解释 (五十一) - 第3张  | 成功智慧网-专注游戏编程开发!

效果还是不错的,假设你比較细心会发现,那个下拉刷新的转圈的图片咋变成机器人了,那是由于我在布局文件中面设置了:

当然了这是旋转的效果,一般经常使用的还有,一个箭头倒置的效果,事实上也非常easy,一个属性:

ptr:ptrAnimationStyle=”flip”

去掉 ptr:ptrDrawable=”@drawable/ic_launcher”这个属性,假设你希望用下图默认的箭头,你也能够自己定义。

加入后,箭头就是这个样子:

Android研究之手PullToRefresh(ListView GridView 下拉刷新)使用具体解释 (五十一) - 第4张  | 成功智慧网-专注游戏编程开发!

ptr:ptrAnimationStyle的取值:flip(翻转动画), rotate(旋转动画) 。

ptr:ptrDrawable则就是设置图标了。

4、自己定义下拉指示器文本内容等效果

能够在初始化完毕mPullRefreshListView后,通过mPullRefreshListView.getLoadingLayoutProxy()能够得到一个ILoadingLayout对象,这个对象能够设置各种指示器中的样式、文本等。

假设你比較细心,会发现,前面我们设置上次刷新时间已经用到了:

// Update the LastUpdatedLabel
refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label);

如今的效果是:

Android研究之手PullToRefresh(ListView GridView 下拉刷新)使用具体解释 (五十一) - 第5张  | 成功智慧网-专注游戏编程开发!

默认是上拉和下拉的字同一时候改变的,假设我希望单独改变呢?

mPullRefreshListView.getLoadingLayoutProxy(true, false);接收两个參数,为true,false返回设置下拉的ILoadingLayout;为false,true返回设置上拉的。

5、经常使用的一些属性

当然了,pull-to-refresh在xml中还能定义一些属性:

ptrMode,ptrDrawable,ptrAnimationStyle这三个上面已经介绍过。

ptrRefreshableViewBackground 设置整个mPullRefreshListView的背景色

ptrHeaderBackground 设置下拉Header或者上拉Footer的背景色

ptrHeaderTextColor 用于设置Header与Footer中文本的颜色

ptrHeaderSubTextColor 用于设置Header与Footer中上次刷新时间的颜色

ptrShowIndicator假设为true会在mPullRefreshListView中出现icon,右上角和右下角,挺有意思的。

ptrHeaderTextAppearance , ptrSubHeaderTextAppearance分别设置拉Header或者上拉Footer中字体的类型颜色等等。

ptrRotateDrawableWhilePulling当动画设置为rotate时,下拉是是否旋转。

ptrScrollingWhileRefreshingEnabled刷新的时候,是否同意ListView或GridView滚动。认为为true比較好。

ptrListViewExtrasEnabled 决定了Header,Footer以何种方式增加mPullRefreshListView,true为headView方式增加,就是滚动时刷新头部会一起滚动。

最后2个事实上对于用户体验还是挺重要的,假设设置的时候考虑下~。其它的属性自己选择就好。

注:上述属性非常多都能够代码控制,假设有须要能够直接mPullRefreshListView.set属性名 查看

以上为pull-to-refresh全部支持的属性~~

定义了一堆的效果:

Android研究之手PullToRefresh(ListView GridView 下拉刷新)使用具体解释 (五十一) - 第6张  | 成功智慧网-专注游戏编程开发!

右上、右下那个图标就是ptrShowIndicator。好了,大家能够依照自己的需求对着上面的属性解释配置。

在github上下载的样例,是依赖3个项目的,一个主要的library_pullToRefresh,一个PullToRefreshViewPager,一个PullToRefreshListFragment ;

上面介绍的样例仅仅依赖library_pullToRefresh,其它两个依赖不用导入。

好了,假设你认为本篇博客对你实用,就点个赞~留个言吧

源代码下载:zhy_pulltorefreash_chenyoca


http://www.niftyadmin.cn/n/1176893.html

相关文章

2、明明的随机数

题目描述 明明想在学校中请一些同学一起做一项问卷调查&#xff0c;为了实验的客观性&#xff0c;他先用计算机生成了N个1到1000之间的随机整数&#xff08;N≤100&#xff09;&#xff0c;对于其中重复的数字&#xff0c;只保留一个&#xff0c;把其余相同的数去掉&#xff0c…

matlab之判断回文数,C++代码札记(四)判断一个数是否为回文数

&#xfeff;&#xfeff;/*判断一个数是否为回文数,要求一行显示8个,每个数占6列显示*/string 判断回文数(int 回文数 98){/*任意不超过10位的数*/int 数位[10]{0}, 位(0), 半(0);string 是否("是");do{数位[位] 回文数 % 10;} while (回文数 / 10);do{if (数位[-…

AC日记——组合数问题 落谷 P2822 noip2016day2T1

题目描述 组合数表示的是从n个物品中选出m个物品的方案数。举个例子&#xff0c;从&#xff08;1,2,3) 三个物品中选择两个物品可以有&#xff08;1,2),(1,3),(2,3)这三种选择方法。根据组合数的定 义&#xff0c;我们可以给出计算组合数的一般公式&#xff1a; 其中n! 1 2 …

matlab 子程序 主程序,MATLAB 主程序和子程序之间的问题 子程序出错

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼子程序如下&#xff1a;function [Xd,Ad,Bd,A,B,g0,h0]initial_h0(n,k,Wa,SRLa,SXLa)% This function generates the initial guess for the numerator polynomial% h(p).%--------------------Inputs:%Wa: Normalized angular fre…

程序员第一次软件实习需掌握的5大技巧

2019独角兽企业重金招聘Python工程师标准>>> 如果你正在阅读这篇文章&#xff0c;并且刚刚拿到你的第一份实习offer&#xff0c;那么恭喜你&#xff01;你的辛勤工作、熬夜学习、专研技术等等努力通通没有白费。面试官非常欣赏你&#xff0c;你拿到了临时签约的offe…

20145222GDB调试汇编堆栈过程分析

GDB调试汇编堆栈过程分析 实践代码example.c #include<stdio.h> short addend1 1; static int addend2 2; const static long addend3 3;static int g(int x) {return x addend1; } static const int f(int x) {return g(x addend2); }int main(void) {return f(8)…

linux利用grep查看打印匹配的下几行或前后几行的命令

转自&#xff1a;http://www.itokit.com/2013/0308/74883.html linux系统中&#xff0c;利用grep打印匹配的上下几行 如果在只是想匹配模式的上下几行&#xff0c;grep可以实现。$grep -5 parttern inputfile //打印匹配行的前后5行$grep -C 5 parttern inputfile //打印匹配行…

lorenz画图matlab,Matlab画Lorenz系统的最大李雅普诺夫指数图

Lorenz 系统文档分两个文件方程m文件和计算L指数m文件分开写&#xff0c;复制粘贴即可运行matlab2012a&#xff0c;改写方程文件和参数即可算自己的系统&#xff0c;其中最大L指数用的是经典的柏内庭(G.Benettin)计算方法&#xff0c;准确快速无误&#xff01;附计算结果图&…