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





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





![](http://img.blog.csdn.net/20140426143208625?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbG1qNjIzNTY1Nzkx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)





顺便看一眼API呗:





![](http://img.blog.csdn.net/20140426143234968?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbG1qNjIzNTY1Nzkx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)





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





1、布局文件:





 
**[html]** [view plain](http://blog.csdn.net/lmj623565791/article/details/24521483#)[copy](http://blog.csdn.net/lmj623565791/article/details/24521483#)[![在CODE上查看代码片](https://code.csdn.net/assets/CODE_ico.png)](https://code.csdn.net/snippets/313476)[![派生到我的代码片](https://code.csdn.net/assets/ico_fork.svg)](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;">&#8220;http://schemas.android.com/apk/res/android&#8221;</span>  </span>
  
  - <span style="color: black;">    <span class="attribute" style="color: red;">android:layout_width</span>=<span class="attribute-value" style="color: blue;">&#8220;match_parent&#8221;</span>  </span>
  
  - <span style="color: black;">    <span class="attribute" style="color: red;">android:layout_height</span>=<span class="attribute-value" style="color: blue;">&#8220;match_parent&#8221;</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;">&#8220;@+id/id_swipe_ly&#8221;</span>  </span>
  
  - <span style="color: black;">        <span class="attribute" style="color: red;">android:layout_width</span>=<span class="attribute-value" style="color: blue;">&#8220;match_parent&#8221;</span>  </span>
  
  - <span style="color: black;">        <span class="attribute" style="color: red;">android:layout_height</span>=<span class="attribute-value" style="color: blue;">&#8220;match_parent&#8221;</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;">&#8220;@+id/id_listview&#8221;</span>  </span>
  
  - <span style="color: black;">            <span class="attribute" style="color: red;">android:layout_width</span>=<span class="attribute-value" style="color: blue;">&#8220;match_parent&#8221;</span>  </span>
  
  - <span style="color: black;">            <span class="attribute" style="color: red;">android:layout_height</span>=<span class="attribute-value" style="color: blue;">&#8220;match_parent&#8221;</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:&nbsp;





&nbsp;
**[java]** [view plain](http://blog.csdn.net/lmj623565791/article/details/24521483#)[copy](http://blog.csdn.net/lmj623565791/article/details/24521483#)[![在CODE上查看代码片](https://code.csdn.net/assets/CODE_ico.png)](https://code.csdn.net/snippets/313476)[![派生到我的代码片](https://code.csdn.net/assets/ico_fork.svg)](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;">&#8220;Java&#8221;</span>, <span class="string" style="color: blue;">&#8220;Javascript&#8221;</span>, <span class="string" style="color: blue;">&#8220;C++&#8221;</span>, <span class="string" style="color: blue;">&#8220;Ruby&#8221;</span>, <span class="string" style="color: blue;">&#8220;Json&#8221;</span>,  </span>
  
  - <span style="color: black;">            <span class="string" style="color: blue;">&#8220;HTML&#8221;</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;">&#8220;Lucene&#8221;</span>, <span class="string" style="color: blue;">&#8220;Canvas&#8221;</span>, <span class="string" style="color: blue;">&#8220;Bitmap&#8221;</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;">&#8220;InlinedApi&#8221;</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(&#8220;xxx&#8221;, 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>
好了,结束,我感觉效果挺好看的,不妨试试。&nbsp;





效果图:





![](http://img.blog.csdn.net/20140426144728031)





&nbsp;





&nbsp;





ok ~





&nbsp;





[源码点击此处下载](http://download.csdn.net/detail/lmj623565791/7256271)





转载:http://blog.csdn.net/lmj623565791/article/details/24521483
3

💬 评论