转载请注明:http://blog.csdn.net/duguang77/article/details/40921601

作者信息:

Chris Banes大神详情https://github.com/chrisbanes

PullToRefresh控件下载地址:https://github.com/chrisbanes/Android-PullToRefresh

百度网盘下载地址:http://pan.baidu.com/s/1o6umifw

(一)导入方法:

1.下载后将extras。library,sample导入到Eclipse中

2.导入后时可能会报错,请更改依赖包位置

(二)用法:

我们一般用的比較多的就是单纯的ListView,
当然其它的情况比方GridView,WebView等等。作者也有直接写好的控件。大家直接用就好



以下我们看下使用的基本方法

1.XML布局文件的代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.testpulltoreresh.MainActivity" > <com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/pl_refresh"
android:layout_width="match_parent"
android:layout_height="match_parent" /> </RelativeLayout>


2.设置PullToRefresh的监听事件

mPullList.setOnRefreshListener(new OnRefreshListener2() {

			@Override
public void onPullDownToRefresh(PullToRefreshBase refreshView) {
// 下拉刷新触发的事件
//获取格式化的时间
String label = DateUtils.formatDateTime(getApplicationContext(), System.currentTimeMillis(),
DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_ALL); // 更新LastUpdatedLabel
refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label); ///开启线程模拟调接口填充数据
new GetDataTask().execute();
} @Override
public void onPullUpToRefresh(PullToRefreshBase refreshView) {
// 上提载入触发的事件
///开启线程模拟调接口填充数据
new GetDataTask().execute();
}
});

3.设置下拉。上提功能是否可用

// 设置PullToRefreshListView的模式
//Mode.DISABLED 禁用全部ListView动作和刷新处理
//Mode.MANUAL_REFRESH_ONLY 被废弃的动作。禁用下拉动作处理,可是同意通过手动设置刷新状态
//Mode.PULL_DOWN_TO_REFRESH 被废弃的动作。仅仅有下拉动作
//Mode.PULL_UP_TO_REFRESH 被废弃的动作。仅仅有上提动作 //Mode.PULL_FROM_END 仅仅有上拉动作
//Mode.PULL_FROM_START 仅仅同意用户将从一開始就可刷新视图刷新。一開始是顶部或离开时,依据滚动方向。仅仅有下拉动作
//Mode.BOTH 下拉上提全部动作
mPullList.setMode(Mode.BOTH);

或者是通过XML文件直接设置MODE属性

ptr:ptrMode="both"

只是要注意要增加命名空间
xmlns:ptr="http://schemas.android.com/apk/res-auto"

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.testpulltoreresh.MainActivity" > <com.handmark.pulltorefresh.library.PullToRefreshListView
xmlns:ptr="http://schemas.android.com/apk/res-auto"
android:id="@+id/pl_refresh"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:cacheColorHint="#00000000"
android:divider="#19000000"
android:dividerHeight="0.5dp"
android:fadingEdge="none"
android:fastScrollEnabled="false"
android:footerDividersEnabled="false"
android:headerDividersEnabled="false"
android:smoothScrollbar="true"
ptr:ptrMode="both"/> </RelativeLayout>

4.设置下拉,上提载入的提示

		// 设置PullRefreshListView上提载入时的载入提示
mPullList.setMode(Mode.BOTH);
mPullList.getLoadingLayoutProxy(false, true).setPullLabel("上拉载入...");
mPullList.getLoadingLayoutProxy(false, true).setRefreshingLabel("正在载入...");
mPullList.getLoadingLayoutProxy(false, true).setReleaseLabel("松开载入很多其它..."); // 设置PullRefreshListView下拉载入时的载入提示
mPullList.getLoadingLayoutProxy(true, false).setPullLabel("下拉刷新...");
mPullList.getLoadingLayoutProxy(true, false).setRefreshingLabel("正在载入...");
mPullList.getLoadingLayoutProxy(true, false).setReleaseLabel("松开载入很多其它...");

5.设置下拉。上提刷新的载入动画

ptr:ptrAnimationStyle="flip" 翻转动画
<pre name="code" class="java">ptr:ptrAnimationStyle="rotate"<span style="white-space:pre">	</span>旋转动画

    <com.handmark.pulltorefresh.library.PullToRefreshListView
xmlns:ptr="http://schemas.android.com/apk/res-auto"
.......................
ptr:ptrAnimationStyle="flip"/>

旋转动画:




翻转动画



6.更改下拉时的icon

    <com.handmark.pulltorefresh.library.PullToRefreshListView
xmlns:ptr="http://schemas.android.com/apk/res-auto"
........
ptr:ptrDrawable="@drawable/ic_rockets" />






7.其它的一些经常使用属性

//设置整个mPullRefreshListView的背景色
ptrRefreshableViewBackground //设置下拉Header或者上拉Footer的背景色
ptrHeaderBackground //用于设置Header与Footer中文本的颜色
ptrHeaderTextColor //用于设置Header与Footer中上次刷新时间的颜色
ptrHeaderSubTextColor //假设为true会在mPullRefreshListView中出现icon,右上角和右下角,挺有意思的。
ptrShowIndicator //以下两个分别设置拉Header或者上拉Footer中字体的类型颜色等等。
ptrHeaderTextAppearance,ptrSubHeaderTextAppearance //当动画设置为rotate时,下拉是是否旋转。 ptrRotateDrawableWhilePulling //刷新的时候,是否同意ListView或GridView滚动。认为为true比較好。
ptrScrollingWhileRefreshingEnabled //决定了Header,Footer以何种方式增加mPullRefreshListView,true为headView方式增加。就是滚动时刷新头部会一起滚动。
ptrListViewExtrasEnabled //最后2个事实上对于用户体验还是挺重要的。假设设置的时候考虑下。其它的属性自己选择就好。
//注:上述属性非常多都能够代码控制。假设有须要能够直接mPullRefreshListView.set属性名 查看
//以上为PullToRefresh全部支持的属性~~




我的Demoproject全部代码

public class MainActivity extends Activity {

	private PullToRefreshListView mPullList;
private LinkedList<String> mListItems;
private ArrayAdapter<String> mAdapter; private String[] mStrings = { "我非常善良", "我非常温和", "我是淘女郎",
"我是阿里郎", "我是大灰狼","我是羊羊羊" }; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
setEventListener();
initData();
} /**
* 初始化控件
*/
private void initView() {
mPullList = (PullToRefreshListView) findViewById(R.id.pl_refresh); } /**
* 设置监听
*/
private void setEventListener() {
mPullList.setOnRefreshListener(new OnRefreshListener2() { @Override
public void onPullDownToRefresh(PullToRefreshBase refreshView) {
// 下拉刷新触发的事件
//获取格式化的时间
String label = DateUtils.formatDateTime(getApplicationContext(), System.currentTimeMillis(),
DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_ALL); // 更新LastUpdatedLabel
refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label); ///开启线程模拟调接口填充数据
new GetDataTask().execute();
} @Override
public void onPullUpToRefresh(PullToRefreshBase refreshView) {
// 上提载入触发的事件
///开启线程模拟调接口填充数据
new GetDataTask().execute();
}
}); } /**
* 初始化数据
*/
private void initData() {
// 设置PullToRefreshListView的模式
mPullList.setMode(Mode.BOTH); // 设置PullRefreshListView上提载入时的载入提示
mPullList.setMode(Mode.BOTH);
mPullList.getLoadingLayoutProxy(false, true).setPullLabel("上拉载入...");
mPullList.getLoadingLayoutProxy(false, true).setRefreshingLabel("正在载入...");
mPullList.getLoadingLayoutProxy(false, true).setReleaseLabel("松开载入很多其它..."); // 设置PullRefreshListView下拉载入时的载入提示
mPullList.getLoadingLayoutProxy(true, false).setPullLabel("下拉刷新...");
mPullList.getLoadingLayoutProxy(true, false).setRefreshingLabel("正在载入...");
mPullList.getLoadingLayoutProxy(true, false).setReleaseLabel("松开载入很多其它..."); mListItems = new LinkedList<String>();
mListItems.addAll(Arrays.asList(mStrings)); mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mListItems);
mPullList.setAdapter(mAdapter); } private class GetDataTask extends AsyncTask<Void, Void, String[]> { @Override
protected String[] doInBackground(Void... params) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
}
return null;
} @Override
protected void onPostExecute(String[] result) {
if(mPullList.isHeaderShown()){
mListItems.addFirst("我是新纳入的妾——下拉刷新");
}else if(mPullList.isFooterShown()){
mListItems.addLast("我是让你重回怀抱的妾——上提载入");
} mAdapter.notifyDataSetChanged(); // 调用刷新完毕
mPullList.onRefreshComplete(); super.onPostExecute(result);
}
} }





【PullToRefresh 系列基本用法】 Android装上拉下拉刷新控制具体的解释的更多相关文章

  1. 打造android万能上拉下拉刷新框架——XRefreshView (二)

    打造Android万能上拉下拉刷新框架--XRefreshView(一) 打造Android万能上拉下拉刷新框架--XRefreshView(三) 一.前言 自从上次发表了打造android万能上拉下 ...

  2. 打造Android万能上拉下拉刷新框架--XRefreshView(三)

    转载请注明出处:http://blog.csdn.net/footballclub/ 打造Android万能上拉下拉刷新框架–XRefreshView(一) 打造Android万能上拉下拉刷新框架–X ...

  3. 练习使用XRecyclerView,可上拉下拉刷新。

    package com.lixu.testxrecyclerview; import android.support.v7.app.AppCompatActivity; import android. ...

  4. iOS不得姐项目--推荐关注模块(一个控制器控制两个tableView),数据重复请求的问题,分页数据的加载,上拉下拉刷新(MJRefresh)

    一.推荐关注模块(一个控制器控制两个tableView) -- 数据的显示 刚开始加载数据值得注意的有以下几点 导航控制器会自动调整scrollView的contentInset,最好是取消系统的设置 ...

  5. 解决iscroll.js上拉下拉刷新手指划出屏幕页面无法回弹问题

    博客已迁移至http://zlwis.me. 使用过iscroll.js的上拉下拉刷新效果的朋友应该都碰到过这个问题:在iOS的浏览器中,上拉或下拉刷新时,当手指划出屏幕后,页面无法弹回.很多人因为解 ...

  6. swift实现UItableview上拉下拉刷新模块

    最近用写个项目 发现上拉下拉刷新模块没找到合适的 so 自己写了一个 由于最近忙 教程就不写了 里面有 直接贴地址https://github.com/DaChengTechnology/DCRefr ...

  7. ListView实现上拉下拉刷新加载功能

    第一步.首先在你项目中创建一个包存放支持下拉刷新和上拉加载的类:

  8. SwipeRefreshLayout实现上拉下拉刷新

    1:在布局中添加SwipeRefreshLayout和Listview组件 [html] view plain copy <?xml version="1.0" encodi ...

  9. Android-PullToRefresh上拉下拉刷新加载更多,以及gridview刷新功能的Library下载地址

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985,转载请说明出处. 首先大家应该都听说过此开源框架的强大之处,支持单列以及双列的 上拉加载以及下拉刷新功 ...

随机推荐

  1. 玩转Windows服务系列——Debug、Release版本的注册和卸载,及其原理

    原文:玩转Windows服务系列——Debug.Release版本的注册和卸载,及其原理 Windows服务Debug版本 注册 Services.exe -regserver 卸载 Services ...

  2. 激动啊,终于诞生了,编译了属于俺自己的 JDK

    激动啊,终于诞生了,编译了属于俺自己的 JDK  折腾了2天,现在编译过去了 30多分钟了,久违的 java.exe 终于出现在了 bin 目录中,属于俺自己的 JDK 终于诞生了,激动啊

  3. IE 加速插件之 Google Chrome Frame

    前言 IE 8 及以下版本的速度较慢. 特别是前端的js 和 css 内容较多时尤为突出. 就笔者的开发经验来说GWT, Ext JS, raphael , draw2d 等开发的系统在IE下使用是相 ...

  4. 真实世界里的钢铁侠-特斯拉汽车创始人埃隆&#183;马斯克(Elon Musk)

    真实世界里的钢铁侠--特斯拉汽车公司和SpaceX公司总裁马斯克(31岁).当我们得意于「站在山上踢几块石头下去」或是「站在风口上的猪」的成功理论的时候,我们真的成功了吗?我们到底创造了什么?改变了什 ...

  5. VSTO 学习笔记(十二)自定义公式与Ribbon

    原文:VSTO 学习笔记(十二)自定义公式与Ribbon 这几天工作中在开发一个Excel插件,包含自定义公式,根据条件从数据库中查询结果.这次我们来做一个简单的测试,达到类似的目的. 即在Excel ...

  6. MVC应用程序与单选列表

    原文:MVC应用程序与单选列表 前几天,Insus.NET有在MVC应用程序中,练习了<MVC应用程序,动态创建单选列表(RadioButtonList)>http://www.cnblo ...

  7. 自顶向下分析Binder【1】—— Binder实例篇

    欢迎转载,转载请注明:http://blog.csdn.net/zhgxhuaa 一个Binder实例 我们Binder的学习将从以下的一个实例開始.依据Android文档中的描写叙述,创建一个Bin ...

  8. Burp Suite抓包、截包和改包

    Burp Suite..呵呵.. 听说Burp Suite是能够监測.截取.改动我们訪问web应用的数据包,这么牛X? 条件:本地网络使用代理.由Burp Suite来代理.也就是说,每一个流出外网的 ...

  9. Hdu 4738【求无向图的桥】.cpp

    题目: 曹操在长江上建立了一些点,点之间有一些边连着.如果这些点构成的无向图变成了连通图,那么曹操就无敌了.刘备为了防止曹操变得无敌,就打算去摧毁连接曹操的点的桥.但是诸葛亮把所有炸弹都带走了,只留下 ...

  10. SE 2014年4月22日(二)

    如图配置: 网络中存在三个公有AS 其中AS200使用了 BGP联盟技术(如图配置) 在AS 100 中R1上起源了四条BGP路由,(1)要求全网BGP设备均能够正常学习 (2)要求:(使用BGP团体 ...