下面App基本都有下拉刷新的功能,以前基本都使用XListView或者自己写一个下拉刷新,近期Google提供了一个官方的下拉刷新控件SwipeRefreshLayout,我感觉还不错啊,见惯了传统的下拉刷新,这个反而给人耳目一新的感觉(貌似知乎的APP已经使用这种下拉刷新了)。

Google也在官方网站给出了V4的兼容包:


Android SwipeRefreshLayout 官方下拉刷新控件介绍_下拉刷新

顺便看一眼API呗:


Android SwipeRefreshLayout 官方下拉刷新控件介绍_下拉刷新_02

和XlistView差不多,还是很方便使用的,大概就这4个常用的方法,下面贴个简单的例子。

1、布局文件:

1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
2. android:layout_width="match_parent"  
3. android:layout_height="match_parent" >  
4.   
5. <android.support.v4.widget.SwipeRefreshLayout  
6. android:id="@+id/id_swipe_ly"  
7. android:layout_width="match_parent"  
8. android:layout_height="match_parent" >  
9.   
10. <ListView  
11. android:id="@+id/id_listview"  
12. android:layout_width="match_parent"  
13. android:layout_height="match_parent" >  
14. </ListView>  
15. </android.support.v4.widget.SwipeRefreshLayout>  
16.   
17. </RelativeLayout>



2、MainActivty:

1. package com.zhy.swiperefreshlayoutdemo;  
2.   
3. import java.util.ArrayList;  
4. import java.util.Arrays;  
5. import java.util.List;  
6.   
7. import android.annotation.SuppressLint;  
8. import android.app.Activity;  
9. import android.os.Bundle;  
10. import android.os.Handler;  
11. import android.support.v4.widget.SwipeRefreshLayout;  
12. import android.util.Log;  
13. import android.widget.ArrayAdapter;  
14. import android.widget.ListView;  
15.   
16. public class MainActivity extends Activity implements SwipeRefreshLayout.OnRefreshListener  
17. {  
18.   
19. private static final int REFRESH_COMPLETE = 0X110;  
20. private SwipeRefreshLayout mSwipeLayout;  
21. private ListView mListView;  
22. private ArrayAdapter<String> mAdapter;  
23. private List<String> mDatas = new ArrayList<String>(Arrays.asList("Java", "Javascript", "C++", "Ruby", "Json",  
24. "HTML"));  
25.   
26. private Handler mHandler = new Handler()  
27.     {  
28. public void handleMessage(android.os.Message msg)  
29.         {  
30. switch (msg.what)  
31.             {  
32. case REFRESH_COMPLETE:  
33. "Lucene", "Canvas", "Bitmap"));  
34.                 mAdapter.notifyDataSetChanged();  
35. false);  
36. break;  
37.   
38.             }  
39.         };  
40.     };  
41.   
42. @SuppressLint("InlinedApi")  
43. protected void onCreate(Bundle savedInstanceState)  
44.     {  
45. super.onCreate(savedInstanceState);  
46.         setContentView(R.layout.activity_main);  
47.   
48.         mListView = (ListView) findViewById(R.id.id_listview);  
49.         mSwipeLayout = (SwipeRefreshLayout) findViewById(R.id.id_swipe_ly);  
50.   
51. this);  
52.         mSwipeLayout.setColorScheme(android.R.color.holo_blue_bright, android.R.color.holo_green_light,  
53.                 android.R.color.holo_orange_light, android.R.color.holo_red_light);  
54. new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mDatas);  
55.         mListView.setAdapter(mAdapter);  
56.   
57.     }  
58.   
59. public void onRefresh()  
60.     {  
61. // Log.e("xxx", Thread.currentThread().getName());  
62. // UI Thread  
63.   
64. 2000);  
65.   
66.     }  
67. }



好了,结束,我感觉效果挺好看的,不妨试试。

效果图:


Android SwipeRefreshLayout 官方下拉刷新控件介绍_SwipeRefreshLayout_03

ok ~

源码点击此处下载