Material Design之SwipeToRefresh下拉刷新

来源:互联网 发布:mac系统如何进入终端 编辑:程序博客网 时间:2024/05/20 20:48

转载请标明出处:http://blog.csdn.net/wu_wxc/article/details/47340257
本文出自【吴孝城的CSDN博客】

每个SwipeToRefresh里面只能放一个子View,现在用SwipeToRefresh给listview实现下拉刷新

布局

activity_main.xml

<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.SwipeRefreshLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:id="@+id/id_refresh" >    <ListView        android:id="@+id/id_list"        android:layout_width="match_parent"        android:layout_height="wrap_content"/></android.support.v4.widget.SwipeRefreshLayout>

还要配置几个颜色,在下拉刷新时圆形滚动条的颜色变化

color.xml

<?xml version="1.0" encoding="utf-8"?><resources>    <color name="color_1">#B6DB49</color>    <color name="color_2">#99CC00</color>    <color name="color_3">#8ABD00</color>    <color name="color_4">#7CAF00</color>    <color name="swipe_background_color">#ccc</color></resources>
然后就是主程序了

MainActivity.java

package cn.wuxiaocheng.swipetorefresh;import java.util.ArrayList;import java.util.List;import android.annotation.SuppressLint;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v4.widget.SwipeRefreshLayout;import android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener;import android.widget.ArrayAdapter;import android.widget.ListView;public class MainActivity extends Activity {    private SwipeRefreshLayout swipeRefreshLayout;    private ListView mlist;    private List<String> listmsg;    private ArrayAdapter<String> adapter;    private final int SUCCESS = 1;    @SuppressLint("ResourceAsColor")    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mlist = (ListView)findViewById(R.id.id_list);        listmsg = new ArrayList<String>();        adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listmsg);        mlist.setAdapter(adapter);        //找到下拉控件        swipeRefreshLayout = (SwipeRefreshLayout)findViewById(R.id.id_refresh);        //设置下拉刷新过程中进度动画四种颜色变化        swipeRefreshLayout.setColorSchemeResources(R.color.color_1,                R.color.color_2,                R.color.color_3,                R.color.color_4);        //进度圈大小,只有两个值,DEFAULT、LARGE        swipeRefreshLayout.setSize(SwipeRefreshLayout.LARGE);        //进度圈的背景颜色        swipeRefreshLayout.setProgressBackgroundColor(R.color.swipe_background_color);        /*进度圈位置        swipeRefreshLayout.setPadding(20, 20, 20, 20);        swipeRefreshLayout.setProgressViewOffset(true, 100, 200);        swipeRefreshLayout.setDistanceToTriggerSync(50);*/        //实现下拉滚动效果,100是下拉的位置        swipeRefreshLayout.setProgressViewEndTarget(true, 100);        //手势滑动监听        swipeRefreshLayout.setOnRefreshListener(new OnRefreshListener() {            @Override            public void onRefresh() {                //new一个县城实现刷新,下面内容改为实现的功能。例如网页获取数据的重新获取一遍网页你内容                new Thread(new Runnable() {                    @Override                    public void run() {                        listmsg.clear();           //清空数据                        //刷新添加的内容                        for(int i=1;i<20;i++){                            listmsg.add("刷新得到的内容"+i);                        }                        try {                            Thread.sleep(5000);                        } catch (InterruptedException e) {                            e.printStackTrace();                        }                        //刷新成功                        mHandler.sendEmptyMessage(SUCCESS);                    }                }).start();            }        });    }    //new一个处理程序,接收传过来的数据并做处理    private Handler mHandler = new Handler(){        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            switch (msg.what) {                //返回成功                case 1:                    swipeRefreshLayout.setRefreshing(false);        //关闭刷新                    //将刷新得到的数据添加到适配器里                    adapter.notifyDataSetChanged();                    //swipeRefreshLayout.setEnabled(false);                    break;                default:                    break;            }        }    };}

效果如下图



1 0
原创粉丝点击