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

顺便看一眼API呗:

和XlistView差不多,还是很方便使用的,大概就这4个常用的方法,下面贴个简单的例子。
1、布局文件:
**[html]** [view plain](http://blog.csdn.net/lmj623565791/article/details/24521483#)[copy](http://blog.csdn.net/lmj623565791/article/details/24521483#)[](https://code.csdn.net/snippets/313476)[](https://code.csdn.net/snippets/313476/fork)
<div>
</div>
</div>
</div>
- <span style="color: black;"><span class="tag" style="font-weight: bold; color: #993300;"><</span><span class="tag-name" style="font-weight: bold; color: #993300;">RelativeLayout</span> <span class="attribute" style="color: red;">xmlns:android</span>=<span class="attribute-value" style="color: blue;">“http://schemas.android.com/apk/res/android”</span> </span>
- <span style="color: black;"> <span class="attribute" style="color: red;">android:layout_width</span>=<span class="attribute-value" style="color: blue;">“match_parent”</span> </span>
- <span style="color: black;"> <span class="attribute" style="color: red;">android:layout_height</span>=<span class="attribute-value" style="color: blue;">“match_parent”</span> <span class="tag" style="font-weight: bold; color: #993300;">></span> </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="tag" style="font-weight: bold; color: #993300;"><</span><span class="tag-name" style="font-weight: bold; color: #993300;">android.support.v4.widget.SwipeRefreshLayout</span> </span>
- <span style="color: black;"> <span class="attribute" style="color: red;">android:id</span>=<span class="attribute-value" style="color: blue;">“@+id/id_swipe_ly”</span> </span>
- <span style="color: black;"> <span class="attribute" style="color: red;">android:layout_width</span>=<span class="attribute-value" style="color: blue;">“match_parent”</span> </span>
- <span style="color: black;"> <span class="attribute" style="color: red;">android:layout_height</span>=<span class="attribute-value" style="color: blue;">“match_parent”</span> <span class="tag" style="font-weight: bold; color: #993300;">></span> </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="tag" style="font-weight: bold; color: #993300;"><</span><span class="tag-name" style="font-weight: bold; color: #993300;">ListView</span> </span>
- <span style="color: black;"> <span class="attribute" style="color: red;">android:id</span>=<span class="attribute-value" style="color: blue;">“@+id/id_listview”</span> </span>
- <span style="color: black;"> <span class="attribute" style="color: red;">android:layout_width</span>=<span class="attribute-value" style="color: blue;">“match_parent”</span> </span>
- <span style="color: black;"> <span class="attribute" style="color: red;">android:layout_height</span>=<span class="attribute-value" style="color: blue;">“match_parent”</span> <span class="tag" style="font-weight: bold; color: #993300;">></span> </span>
- <span style="color: black;"> <span class="tag" style="font-weight: bold; color: #993300;"></</span><span class="tag-name" style="font-weight: bold; color: #993300;">ListView</span><span class="tag" style="font-weight: bold; color: #993300;">></span> </span>
- <span style="color: black;"> <span class="tag" style="font-weight: bold; color: #993300;"></</span><span class="tag-name" style="font-weight: bold; color: #993300;">android.support.v4.widget.SwipeRefreshLayout</span><span class="tag" style="font-weight: bold; color: #993300;">></span> </span>
- <span style="color: black;"> </span>
- <span style="color: black;"><span class="tag" style="font-weight: bold; color: #993300;"></</span><span class="tag-name" style="font-weight: bold; color: #993300;">RelativeLayout</span><span class="tag" style="font-weight: bold; color: #993300;">></span> </span>
2、MainActivty:
**[java]** [view plain](http://blog.csdn.net/lmj623565791/article/details/24521483#)[copy](http://blog.csdn.net/lmj623565791/article/details/24521483#)[](https://code.csdn.net/snippets/313476)[](https://code.csdn.net/snippets/313476/fork)
<div>
</div>
</div>
</div>
- <span style="color: black;"><span class="comment" style="color: #008200;">/*</span> </span>
- <span style="color: black;"><span class="comment" style="color: #008200;"> * Created by Storm Zhang, Mar 31, 2014.</span> </span>
- <span style="color: black;"><span class="comment" style="color: #008200;"> */</span> </span>
- <span style="color: black;"> </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">package</span> com.zhy.swiperefreshlayoutdemo; </span>
- <span style="color: black;"> </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> java.util.ArrayList; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> java.util.Arrays; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> java.util.List; </span>
- <span style="color: black;"> </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.annotation.SuppressLint; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.app.Activity; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.os.Bundle; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.os.Handler; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.support.v4.widget.SwipeRefreshLayout; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.util.Log; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.widget.ArrayAdapter; </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">import</span> android.widget.ListView; </span>
- <span style="color: black;"> </span>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">class</span> MainActivity <span class="keyword" style="font-weight: bold; color: #006699;">extends</span> Activity <span class="keyword" style="font-weight: bold; color: #006699;">implements</span> SwipeRefreshLayout.OnRefreshListener </span>
- <span style="color: black;">{ </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> <span class="keyword" style="font-weight: bold; color: #006699;">static</span> <span class="keyword" style="font-weight: bold; color: #006699;">final</span> <span class="keyword" style="font-weight: bold; color: #006699;">int</span> REFRESH_COMPLETE = <span class="number" style="color: #c00000;">0X110</span>; </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> SwipeRefreshLayout mSwipeLayout; </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> ListView mListView; </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> ArrayAdapter<String> mAdapter; </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> List<String> mDatas = <span class="keyword" style="font-weight: bold; color: #006699;">new</span> ArrayList<String>(Arrays.asList(<span class="string" style="color: blue;">“Java”</span>, <span class="string" style="color: blue;">“Javascript”</span>, <span class="string" style="color: blue;">“C++”</span>, <span class="string" style="color: blue;">“Ruby”</span>, <span class="string" style="color: blue;">“Json”</span>, </span>
- <span style="color: black;"> <span class="string" style="color: blue;">“HTML”</span>)); </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> Handler mHandler = <span class="keyword" style="font-weight: bold; color: #006699;">new</span> Handler() </span>
- <span style="color: black;"> { </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> handleMessage(android.os.Message msg) </span>
- <span style="color: black;"> { </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">switch</span> (msg.what) </span>
- <span style="color: black;"> { </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">case</span> REFRESH_COMPLETE: </span>
- <span style="color: black;"> mDatas.addAll(Arrays.asList(<span class="string" style="color: blue;">“Lucene”</span>, <span class="string" style="color: blue;">“Canvas”</span>, <span class="string" style="color: blue;">“Bitmap”</span>)); </span>
- <span style="color: black;"> mAdapter.notifyDataSetChanged(); </span>
- <span style="color: black;"> mSwipeLayout.setRefreshing(<span class="keyword" style="font-weight: bold; color: #006699;">false</span>); </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">break</span>; </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> }; </span>
- <span style="color: black;"> }; </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="annotation" style="color: #646464;">@SuppressLint</span>(<span class="string" style="color: blue;">“InlinedApi”</span>) </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">protected</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> onCreate(Bundle savedInstanceState) </span>
- <span style="color: black;"> { </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">super</span>.onCreate(savedInstanceState); </span>
- <span style="color: black;"> setContentView(R.layout.activity_main); </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> mListView = (ListView) findViewById(R.id.id_listview); </span>
- <span style="color: black;"> mSwipeLayout = (SwipeRefreshLayout) findViewById(R.id.id_swipe_ly); </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> mSwipeLayout.setOnRefreshListener(<span class="keyword" style="font-weight: bold; color: #006699;">this</span>); </span>
- <span style="color: black;"> mSwipeLayout.setColorScheme(android.R.color.holo_blue_bright, android.R.color.holo_green_light, </span>
- <span style="color: black;"> android.R.color.holo_orange_light, android.R.color.holo_red_light); </span>
- <span style="color: black;"> mAdapter = <span class="keyword" style="font-weight: bold; color: #006699;">new</span> ArrayAdapter<String>(<span class="keyword" style="font-weight: bold; color: #006699;">this</span>, android.R.layout.simple_list_item_1, mDatas); </span>
- <span style="color: black;"> mListView.setAdapter(mAdapter); </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> onRefresh() </span>
- <span style="color: black;"> { </span>
- <span style="color: black;"> <span class="comment" style="color: #008200;">// Log.e(“xxx”, Thread.currentThread().getName());</span> </span>
- <span style="color: black;"> <span class="comment" style="color: #008200;">// UI Thread</span> </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> mHandler.sendEmptyMessageDelayed(REFRESH_COMPLETE, <span class="number" style="color: #c00000;">2000</span>); </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> } </span>
- <span style="color: black;">} </span>
好了,结束,我感觉效果挺好看的,不妨试试。
效果图:

ok ~
[源码点击此处下载](http://download.csdn.net/detail/lmj623565791/7256271)
转载:http://blog.csdn.net/lmj623565791/article/details/24521483
- 3
- 踩
💬 评论