zoukankan      html  css  js  c++  java
  • Android研究之手PullToRefresh(ListView GridView 下拉刷新)使用具体解释

    

    群里一哥们今天聊天偶然提到这个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

  • 相关阅读:
    Spring spEL
    Spring 使用外部部署文件
    Spring 自动装配
    spring 属性配置细节
    hdu 1054 Strategic Game
    fzu 2037 Maximum Value Problem
    将博客搬至CSDN
    HDU 4714 Tree2Cycle
    HDU 1009 The Shortest Path in Nya Graph
    POJ 1942 Paths on a Grid 组合数的优化
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3998864.html
Copyright © 2011-2022 走看看