SwipeRefreshLayout 详细使用介绍

文章目录

一、SwipeRefreshLayout简介

SwipeRefreshLayout是官方提供的下拉刷新解决控件,具有使用简单,灵活等特点。不足的地方,不可以自定义刷新的头部和加载更多功能。不过通过修改SwipeRefreshLayout可以轻松实现这些功能,本文只介绍使用和对各个方法进行说明。

在实际开发中多对SwipeRefreshLayout二次封装,更改刷新UI。
SuperEasyRefreshLayout是一个非常强大的二次封装控件,不仅美化了刷新UI,而且可以根据需要自定义UI效果的View,且实现了上拉加载更多的功能。
SuperEasyRefreshLayout的使用介绍的地址是:http://blog.csdn.net/fightingxia/article/details/75307875
SuperEasyRefreshLayout的源码在GitHub上的地址是:https://github.com/guozhengXia/SuperEasyRefreshLayout

二、常用方法

方法解释
setColorSchemeResources(int…colorReslds)设置下拉进度条的颜色主题,参数可变,并且是资源id,最多设置四种不同的颜色。
setProgressBackgroundSchemeResource(int coloRes)设置下拉进度条的背景颜色,默认白色。
isRefreshing()判断当前的状态是否是刷新状态。
setOnRefreshListener(SwipeRefreshLayout.OnRefreshListener listener)设置监听,需要重写onRefresh()方法, 顶部下拉时会调用这个方法,在里面实现请求数据的逻辑,设置下拉进度条消失等等。
setRefreshing(boolean refreshing)设置刷新状态,true表示正在刷新,false表示取消刷新

三、基本使用

1.首先在应用或模块的 build.gradle 文件中添加所需工件的依赖项:

  implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'

 
 
  • 1

**> 可能会遇到的错误:

1.无法加载 android.support.v4.widget.SwipeRefreshLayout
解决:android.support.v4.widget.SwipeRefreshLayout改为androidx.swiperefreshlayout.widget.SwipeRefreshLayout**

2.在xml添加引入SwipeRefreshLayout的代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    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">
<span class="token operator">&lt;</span>androidx<span class="token punctuation">.</span>swiperefreshlayout<span class="token punctuation">.</span>widget<span class="token punctuation">.</span>SwipeRefreshLayout
    android<span class="token punctuation">:</span>id<span class="token operator">=</span><span class="token string">"@+id/refreshLayout"</span>
    android<span class="token punctuation">:</span>layout_width<span class="token operator">=</span><span class="token string">"wrap_content"</span>
    android<span class="token punctuation">:</span>layout_height<span class="token operator">=</span><span class="token string">"wrap_content"</span>
    android<span class="token punctuation">:</span>text<span class="token operator">=</span><span class="token string">"Hello World!"</span><span class="token operator">&gt;</span>
    <span class="token operator">&lt;</span>ListView
        android<span class="token punctuation">:</span>id<span class="token operator">=</span><span class="token string">"@+id/listView"</span>
        android<span class="token punctuation">:</span>layout_width<span class="token operator">=</span><span class="token string">"match_parent"</span>
        android<span class="token punctuation">:</span>layout_height<span class="token operator">=</span><span class="token string">"wrap_content"</span> <span class="token operator">/</span><span class="token operator">&gt;</span>
<span class="token operator">&lt;</span><span class="token operator">/</span>androidx<span class="token punctuation">.</span>swiperefreshlayout<span class="token punctuation">.</span>widget<span class="token punctuation">.</span>SwipeRefreshLayout<span class="token operator">&gt;</span>

</LinearLayout>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

3.然后在MainActivy设置,下拉刷新的回调即可

 refreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                //模拟网络请求需要3000毫秒,请求完成,设置setRefreshing 为false,停止刷新
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        refreshLayout.setRefreshing(false);
                    }
                }, 3000);
            }
        });

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

四、进阶使用

SwipeRefreshLayout 还提供了一些方法设置进度的样式,滑动的开始位置和结束位置等

方法名作用
setSize(int size)设置进度View样式的大小,只有两个值DEFAULT和LARGE
setProgressViewOffset(boolean scale, int start, int end)设置进度View下拉的起始点和结束点,scale 是指设置是否需要放大或者缩小动画
setProgressViewEndTarget(boolean scale, int end)设置进度View下拉的结束点,scale 是指设置是否需要放大或者缩小动画
setColorSchemeColors(@ColorInt int… colors) }设置进度View的组合颜色,在手指上下滑时使用第一个颜色,在刷新中,会一个个颜色进行切换
setDistanceToTriggerSync(int distance)设置触发刷新的距离
setOnChildScrollUpCallback(@Nullable OnChildScrollUpCallback callback)如果child是自己自定义的view,可以通过这个回调,告诉swipeRefreshLayoutchild是否可以滑动

简单的例子:

//设置进度View样式的大小,只有两个值DEFAULT和LARGE
refreshLayout.setSize(mSetSizeBean.size);
//设置进度View下拉的起始点和结束点,scale 是指设置是否需要放大或者缩小动画
refreshLayout.setProgressViewOffset(true, -0, 100);
//设置进度View下拉的结束点,scale 是指设置是否需要放大或者缩小动画
refreshLayout.setProgressViewEndTarget(true, 180);
//设置进度View的组合颜色,在手指上下滑时使用第一个颜色,在刷新中,会一个个颜色进行切换
refreshLayout.setColorSchemeColors(Color.BLACK, Color.GREEN, Color.RED, Color.YELLOW, Color.BLUE);

//设置触发刷新的距离
refreshLayout.setDistanceToTriggerSync(200);
//如果child是自己自定义的view,可以通过这个回调,告诉mSwipeRefreshLayoutchild是否可以滑动
refreshLayout.setOnChildScrollUpCallback(null);

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
原文链接:https://blog.csdn.net/m0_47761892/article/details/107674585
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值