SwipeRefreshLayout基本使用

来源:互联网 发布:评论盖楼的数据库设计 编辑:程序博客网 时间:2024/05/29 18:51

   在android的support.V4包中,提供了一个下拉刷新的控件:SwipeRefreshLayout。使用该控件可以实现知乎上的下拉刷新效果。首先来看一下这个类的继承关系。

从这个继承关系,可以看到SwipeRefreshLayout是一个ViewGroup,这个ViewGroup只有一个子view,便是我们需要刷新的控件。下面是一个简单的例子演示一下如何使用该控件。


布局文件:

 

<?xml version="1.0" encoding="utf-8"?><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=".MainActivity">    <android.support.v4.widget.SwipeRefreshLayout        android:id="@+id/swiperefresh"        android:layout_width="match_parent"        android:layout_height="match_parent">        <ListView            android:id="@+id/listview"            android:layout_width="match_parent"            android:layout_height="wrap_content" />    </android.support.v4.widget.SwipeRefreshLayout></RelativeLayout>

主actiivty.java

package com.gearmotion.app.swiperefreshlayoutmotion;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v4.widget.SwipeRefreshLayout;import android.support.v7.app.AppCompatActivity;import android.widget.ArrayAdapter;import android.widget.ListView;import java.util.ArrayList;import java.util.List;import butterknife.Bind;import butterknife.ButterKnife;public class MainActivity extends AppCompatActivity implements SwipeRefreshLayout.OnRefreshListener {    //使用butterknife这个框架来初始化view,可以省去一系列的findeviewbyId()方法的调用    @Bind(R.id.swiperefresh)    SwipeRefreshLayout mSwipeRefreshLayout;    @Bind(R.id.listview)    ListView mListView;    private List<String> mData;    private ArrayAdapter<String> mAdapter;    private static final int FLAG = 0x01;    private Handler mHandler = new Handler() {        @Override        public void dispatchMessage(Message msg) {            int what = msg.what;            if (what == FLAG) {                mData.add("fruit");                mAdapter.notifyDataSetChanged();                //处理完事物之后必须调用该函数,取消加载动画                mSwipeRefreshLayout.setRefreshing(false);            }        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ButterKnife.bind(this);        initData();        bindData();    }    private void initData() {        mData = new ArrayList<String>();        mData.add("apple");        mData.add("pear");        mData.add("watermelon");        mData.add("orange");        mData.add("banana");    }    private void bindData() {        mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,                android.R.id.text1, mData);        mListView.setAdapter(mAdapter);        //设置监听事件        mSwipeRefreshLayout.setOnRefreshListener(this);    }    @Override    public void onRefresh() {        Message msg = Message.obtain();        msg.what = FLAG;        //延长动画效果        mHandler.sendMessageDelayed(msg, 4000);    }}

实现的效果如下:



0 0
原创粉丝点击