美文网首页菜鸟商城学习笔记swipeRefreshLayout
08-下拉刷新控件SwipeRefreshLayout介绍

08-下拉刷新控件SwipeRefreshLayout介绍

作者: 小楠总 | 来源:发表于2016-08-04 17:55 被阅读558次

    一、SwipeRefreshLayout的简介

    以前我们都是使用XListView等流行框架实现下拉刷新以及上拉加载更多的,今天我介绍一个新的控件SwipeRefreshLayout,它是谷歌官方提供的一个新控件,同样可以实现下拉刷新。

    SwipeRefreshLayout是V4支持包中提供的一个新的控件,它可以实现下拉刷新的功能。但是缺点是没有实现上拉加载更多。但是网上有很多开发者对它进行加强,使得它可以实现上拉加载。

    SwipeRefreshLayout可以与ListView,RecycleView,GridView等列表控件配合使用,而且高度解耦,使用方便灵活,下拉刷新效果比较炫酷,因此赢得我们的青睐。

    这是SwipeRefreshLayout的官方文档,注:这是国内的API镜像。
    http://doc.cniao5.com/android/reference/android/support/v4/widget/SwipeRefreshLayout.html

    二、SwipeRefreshLayout的基本使用

    1、在Gradle中引入SwipeRefreshLayout的依赖库。

    compile 'com.android.support:support-v4:23.1.1'
    

    2、在布局文件当中放置我们的SwipeRefreshLayout。SwipeRefreshLayout里面也可以放置任意列表控件,通过这种方式可以实现SwipeRefreshLayout和列表之间的解耦。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <android.support.v4.widget.SwipeRefreshLayout
            android:id="@+id/refreshLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
            <android.support.v7.widget.RecyclerView
                android:id="@+id/recycle"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"/>
    
        </android.support.v4.widget.SwipeRefreshLayout>
    
    </LinearLayout>
    

    3、代码中的配置,详细看注释,不一一赘述。这个Demo是在CardView的基础上修改而来的。

    refreshLayout = (SwipeRefreshLayout) findViewById(R.id.refreshLayout);
    
    //设置进度条的颜色,不定长参数可以设置多种颜色
    //对于RefreshLayout,网上有人说最多4种颜色,不要使用android.R.color.,否则会卡死
    refreshLayout.setColorSchemeColors(
            Color.RED,
            Color.YELLOW,
            Color.GREEN);
    
    //设置进度条的背景颜色
    refreshLayout.setProgressBackgroundColorSchemeColor(Color.WHITE);
    
    //设置大小
    refreshLayout.setSize(SwipeRefreshLayout.LARGE);
    
    //设置手指划过多少像素开始触发刷新
    refreshLayout.setDistanceToTriggerSync(100);
    
    //设置刷新的时候监听,三秒钟之后添加数据完毕
    refreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
        @Override
        public void onRefresh() {
            //模拟网络请求数据
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    for (int i = 0; i < 30; i++) {
                        //添加数据
                        myAdapter.addData(i, "new data " + i);
                        myAdapter.notifyItemRangeChanged(0, 30);
                    }
    
                    //recyclerView回到最上面
                    recyclerView.scrollToPosition(0);
                    //判断是否在刷新
    //                      refreshLayout.isRefreshing()
                    //刷新完毕,关闭下拉刷新的组件
                    refreshLayout.setRefreshing(false);
                }
            }, 3000);
        }
    });
    

    三、运行效果

    是不是觉得瞬间高大上有木有,大家快去敲码吧O(∩_∩)O~~。

    如果觉得我的文字对你有所帮助的话,欢迎关注我的公众号:

    公众号:Android开发进阶

    我的群欢迎大家进来探讨各种技术与非技术的话题,有兴趣的朋友们加我私人微信huannan88,我拉你进群交(♂)流(♀)

    相关文章

      网友评论

        本文标题:08-下拉刷新控件SwipeRefreshLayout介绍

        本文链接:https://www.haomeiwen.com/subject/akzcsttx.html