转载请注明: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() {@Overridepublic void onPullDownToRefresh(PullToRefreshBase refreshView) {// 下拉刷新触发的事件//获取格式化的时间String label = DateUtils.formatDateTime(getApplicationContext(), System.currentTimeMillis(),DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_ALL);//更新LastUpdatedLabelrefreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label);///开启线程模拟调接口填充数据new GetDataTask().execute();}@Overridepublic 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所有支持的属性~~





我的Demo工程所有代码
public class MainActivity extends Activity {private PullToRefreshListView mPullList;private LinkedList<String> mListItems;private ArrayAdapter<String> mAdapter;private String[] mStrings = { "我很善良", "我很温柔", "我是淘女郎", "我是阿里郎", "我是大灰狼","我是羊羊羊" };@Overrideprotected 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() {@Overridepublic void onPullDownToRefresh(PullToRefreshBase refreshView) {// 下拉刷新触发的事件//获取格式化的时间String label = DateUtils.formatDateTime(getApplicationContext(), System.currentTimeMillis(),DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_ALL);//更新LastUpdatedLabelrefreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label);///开启线程模拟调接口填充数据new GetDataTask().execute();}@Overridepublic 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[]> {@Overrideprotected String[] doInBackground(Void... params) {try {Thread.sleep(2000);} catch (InterruptedException e) {}return null;}@Overrideprotected void onPostExecute(String[] result) {if(mPullList.isHeaderShown()){mListItems.addFirst("我是新纳入的妾——下拉刷新");}else if(mPullList.isFooterShown()){mListItems.addLast("我是让你重回怀抱的妾——上提加载");}mAdapter.notifyDataSetChanged();// 调用刷新完成mPullList.onRefreshComplete();super.onPostExecute(result);}}}



Demo下载地址: http://pan.baidu.com/s/1c03tVVE
转载请注明: http://blog.csdn.net/duguang77/article/details/40921601


更多相关文章

  1. Android(安卓)背景图片重复平铺 Background repeat
  2. Eclipse下加载AndroidSDK源码
  3. Android模块化编程——WebView使用之与JavaScript交互
  4. 【Android】Android(安卓)UI 开发_习题
  5. Android(安卓)签名打包出现的错误的解决方法以及代码中获取应用
  6. Android面试-Android项目构建
  7. android用webview加载H5页面出现点击事件失效的问题解决
  8. Java乔晓松-android控制显示和隐藏视图或控件的操作
  9. [置顶] android加载大图片到内存

随机推荐

  1. android弹力效果菜单、组件化项目、电影
  2. 创建Android库的方法及Android .aar文件
  3. 2014 Android 各个版本市场占有率
  4. Android木马之“妄想”
  5. [Android][转]Android(安卓)View绘制13问
  6. 这是一份全面 & 详细的Android学习指南
  7. Android屏幕适配终极方案-原理篇
  8. android小说阅读、MVP + RxJava + Retrof
  9. achartengine在Android中ScrollView组件
  10. 修改Android工程版本