SwipeRefreshLayout 下拉刷新控件(一)

简介: SwipeRefreshLayout 下拉刷新控件(一)

下拉刷新是每个app中都会用到的一个功能,最近接手一个项目的时候,看到了SwipeRefreshLayout 这个控件,表示以前没用过,以前用的都是pullTorefresh,于是去网上查找了一下,谷歌的这个控件将刷新和listview做了解耦。这里做一下记录。


先看一下效果图:

aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTYxMjE0MTA0MzM2NzQw.png

首先贴一下布局文件:

<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="${relativePackage}.${activityClass}" >
      <android.support.v4.widget.SwipeRefreshLayout
          android:id="@+id/id_swipe_ly"
          android:layout_width="match_parent"
          android:layout_height="match_parent">
        <ListView
            android:id="@+id/id_listview"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
      </android.support.v4.widget.SwipeRefreshLayout>
</RelativeLayout>


然后是代码:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.widget.SwipeRefreshLayout;
import android.util.TypedValue;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends Activity implements
        SwipeRefreshLayout.OnRefreshListener {
    private ListView mListView;
    private SwipeRefreshLayout mSwipeLayout;
    private static final int REFRESH_COMPLETE = 0X110;
    private ArrayAdapter<String> mAdapter;
    private List<String> mDatas = new ArrayList<String>(Arrays.asList("Android",
            "我要学Android", "我要学IOS", "我要学H5", "我要学PHP", "我要学ASP.NET"));
    private Handler mHandler = new Handler() {
        public void handleMessage(android.os.Message msg) {
            switch (msg.what) {
            case REFRESH_COMPLETE:
                mDatas.addAll(Arrays.asList("Java是基础", "PHP是最好的鱼眼", "C#也不错哦"));
                mAdapter.notifyDataSetChanged();
                mSwipeLayout.setRefreshing(false);
                break;
            default:
                break;
            }
        };
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mListView = (ListView) findViewById(R.id.id_listview);
        mSwipeLayout = (SwipeRefreshLayout) findViewById(R.id.id_swipe_ly);
        setSwipeRefresh();
        onRefresh();// 手动刷新
        // mSwipeLayout.setRefreshing(true);
        // mSwipeLayout.post(new Runnable() {
        //
        // @Override
        // public void run() {
        // // TODO Auto-generated method stub
        // mSwipeLayout.setRefreshing(true);
        // }
        // });
        mSwipeLayout.setOnRefreshListener(this);
        // setColorScheme()已经弃用,使用setColorSchemeResources()来设置颜色。
        mSwipeLayout.setColorScheme(android.R.color.holo_blue_bright,
                android.R.color.holo_green_light,
                android.R.color.holo_orange_light,
                android.R.color.holo_red_light);
        mAdapter = new ArrayAdapter<>(this,
                android.R.layout.simple_list_item_1, mDatas);
        mListView.setAdapter(mAdapter);
    }
    @Override
    public void onRefresh() {
        // TODO Auto-generated method stub
        mHandler.sendEmptyMessageDelayed(REFRESH_COMPLETE, 2000);
    }
    private void setSwipeRefresh() {
        TypedValue typed_value = new TypedValue();
        this.getTheme().resolveAttribute(
                android.support.v7.appcompat.R.attr.actionBarSize, typed_value,
                true);
        // mSwipeLayout.setProgressViewOffset(false, 0,
        // getResources().getDimensionPixelSize(typed_value.resourceId));
        mSwipeLayout.setRefreshing(true);
    }
}


这里就介绍完毕了,虽然效果很炫,但是唯一的缺点就是只有下拉刷新,没有上拉加载。那么下一节我们将自定义实现SwipeFefreshLayout的上拉刷新和下拉加载。

这里附上demo的下载链接:

http://download.csdn.net/detail/u014727709/9710933



欢迎start,欢迎评论,欢迎指正



相关文章
|
Android开发
Android 使用SwipeRefreshLayout实现RecyclerVeiw的下拉刷新和上拉加载
Android 使用SwipeRefreshLayout实现RecyclerVeiw的下拉刷新和上拉加载
108 0
|
JavaScript Linux
【unapp】上拉加载,下拉刷新
【unapp】上拉加载,下拉刷新
102 0
SwipeRefreshLayout 下拉刷新控件(二)
SwipeRefreshLayout 下拉刷新控件(二)
|
API
为RecyclerView添加下拉刷新功能
在之前的文章中,我们实现了带有header和footer功能的WrapRecyclerView。 现今App中列表的下拉刷新和上拉加载已经是一种习惯了,这两个操作也确实方便很多。 为RecyclerView添加这个功能可以通过多种方法,这里我选用了一种简单的做法。基于pulltorefresh这个库。
184 0
CoordinatorLayout + AppBarLayout 实现标题栏置顶
CoordinatorLayout + AppBarLayout 实现标题栏置顶
RecyclerView的下拉刷新和加载更多 动画
下拉刷新和加载更多 1、https://github.com/jianghejie/XRecyclerView 2、http://blog.csdn.net/jabony/article/details/44780187   动画 1、https://github.
1947 0
|
前端开发
RecyclerView学习(五)----SwipeRefreshLayout的下拉刷新与上拉加载
SwipeRefreshLayout作为官方的下拉刷新控件,简洁美观的风格使其广泛应用在项目中。美中不足的是SwipeRefreshLayout缺少上拉加载的效果,今天结合RecyclerView实现一个支持下拉刷新与上拉加载的SwipeRefreshLayout。
1349 0