Android开发:记录两种下拉刷新的第三方控件 SwipeRefreshLayout 和 SmartRefreshLayout

Android---SmartRefreshLayout实现上拉刷新和下拉加载更多 2. 如果使用 AndroidX 先在 gradle.properties 中添加。因为这个第三方库里有用到旧版的 Support 依赖包。android.enableJetifier=true 这个属性的作用可以简单理解为,如果自己的项目为 AndroidX,但也用到了一些第三方库,而第三方库里面还用的是旧版的依赖。这种情况下就会发生冲突。android.enableJetifier=true 这个属性就会在编译的时候把第三方依赖里面的旧版依赖换成我们 AndroidX 里的依赖。 阅读详情
AI摘要

本文介绍了两种Android下拉刷新库。一是Google官方仅支持下拉刷新的SwipeRefreshLayout,介绍了其引入依赖、布局使用、代码实现及进阶方法;二是常用的支持下拉刷新和上拉加载的SmartRefreshLayout,同样介绍了依赖、布局和代码实现,作者更推荐后者。

 

目录

一、SwipeRefreshLayout (仅支持下拉刷新)介绍

1.1、效果图

1.2、项目中引入依赖

1.3、在xml布局中引入该控件

1.4、activity中代码实现

1.5、进阶

二、SmartRefreshLayout(支持下拉刷新和上拉加载) 介绍

2.1、效果图

2.2、项目引入依赖

2.3、在xml布局中引入该控件

2.4、activity中代码实现


 

本篇文章主要介绍两种下拉刷新库,第一种是google官方库中仅支持下拉刷新的控件--SwipeRefreshLayout;第二种是平时用的比较多且同时支持下拉刷新和上拉加载功能的控件--SmartRefreshLayout。这两种控件我更喜欢第二种,原因很简单,第二种既支持上拉加载又支持下拉刷新。所以,何乐而不为呢!

一、SwipeRefreshLayout (仅支持下拉刷新)介绍

1.1、效果图

 

1.2、项目中引入依赖

在app的gradle中添加如下依赖

implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"

1.3、在xml布局中引入该控件

该控件需要嵌套列表控件如:ListView 或者 RecyclerView

<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
    android:id="@+id/swipeRefreshLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycler"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

 

1.4、activity中代码实现

var swipeRefreshLayout = view.findViewById(R.id.swipeRefreshLayout)
//设置加载条显示的颜色
swipeRefreshLayout.setColorSchemeColors(
    Color.parseColor("#ff0000"),
    Color.parseColor("#00ff00"),
    Color.parseColor("#0000ff")
)
        swipeRefreshLayout.setOnRefreshListener(object : SwipeRefreshLayout.OnRefreshListener {
            override fun onRefresh() {
//                开始下拉刷新
                swipeRefreshLayout.isRefreshing = true
                
//                业务层处理,调后台接口,拉取数据
                
//                数据获取成功,关闭加载框
                Handler().postDelayed(object : Runnable {
                    override fun run() {
                        swipeRefreshLayout.isRefreshing = false
                    }
                }, 2000)
            }

        })

1.5、进阶

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)k如果child是自己自定义的view,可以通过这个回调,告诉swipeRefreshLayoutchild是否

关于 SwipeRefreshLayout 的使用就简单介绍到这里,了解更多内容,请查看官方文档 https://developer.android.google.cn/jetpack/androidx/releases/swiperefreshlayout

 

二、SmartRefreshLayout(支持下拉刷新和上拉加载) 介绍

2.1、效果图

 

2.2、项目引入依赖

在app的gradle中添加如下依赖

implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.5.1'
implementation 'com.scwang.smartrefresh:SmartRefreshHeader:1.0.5.1'//没有使用特殊Header,可以不加这行

2.3、在xml布局中引入该控件

该控件需要嵌套列表控件如:ListView 或者 RecyclerView

<com.scwang.smartrefresh.layout.SmartRefreshLayout
    android:id="@+id/refreshLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycler"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</com.scwang.smartrefresh.layout.SmartRefreshLayout>

2.4、activity中代码实现

 var refreshLayout = view.findViewById(R.id.refreshLayout)
        //设置 Header 为 贝塞尔雷达 样式
        refreshLayout.setRefreshHeader(MaterialHeader(context))
//设置 Footer 为 球脉冲 样式
        refreshLayout.setRefreshFooter(
            BallPulseFooter(context as MainActivity).setSpinnerStyle(
                SpinnerStyle.Scale
            )
        )
//        下拉刷新
        refreshLayout.setOnRefreshListener(object : OnRefreshListener {
            override fun onRefresh(refreshLayout: RefreshLayout?) {

                refreshLayout?.autoRefresh()

//             业务处理,   加载数据
//..................
//                加载数据完成后,关闭刷新
                Handler().postDelayed(object : Runnable {
                    override fun run() {
                        refreshLayout?.finishRefresh()
                    }
                }, 2000)

            }
        })

//        上拉加载更多
        refreshLayout.setOnLoadMoreListener(object : OnLoadMoreListener {
            override fun onLoadMore(refreshLayout: RefreshLayout?) {
                refreshLayout?.autoLoadMore()

                //              业务处理,  加载数据
//..................
//                加载数据完成后,关闭刷新

                Handler().postDelayed(object : Runnable {
                    override fun run() {
                        refreshLayout?.finishLoadMore()
                    }
                }, 2000)
            }
        })

关于 SmartRefreshLayout 的使用就简单介绍到这里,了解更多内容,请查看官方文档 https://github.com/scwang90/SmartRefreshLayout

 

本篇文章到这里就结束了,关注我,了解更多Android知识!

SmartRefreshLayout智能下拉刷新框架 . 前面写了一个自定义的RecyclerView适配器,实现RecyclerView的下拉刷新有两种方式. 1、重写RecyclerView.Adapter的 getItemViewType(int position)方法,根据不同位置返回不同类型即可。可以利用这个特性把第0个位置预留出来,固定把第0个item存放下拉刷新的view 2、在RecyclerView外部嵌套一个类似SwipeRefr... 阅读详情

相关推荐

【Android】SmartRefreshLayout实现下拉刷新,上拉加载效果

使用SmartRefreshLayout,实现下拉刷新,上拉加载效果。

纷飞的霜 1510

SwipeRefreshLayout的基本使用

SwipeRefreshLayout的基本使用 简介 SwipRefreshLayout是谷歌前一段时间推出的一款下拉刷新控件。 常用方法 方法 解释 setColorSchemeResources(int…colorReslds) 设置下拉进度条的颜色主题,参数可变,并且是资源id,最多设置四种不同的颜色。 setProgressBackgroundSchemeResource(int coloRes) 设置下拉进度条的背景颜色,默认白色。 isRefreshing() 判断当前的

fjnu_se的博客 3万+

Android下拉刷新控件SwipeRefreshLayout实践指南

本文还有配套的精品资源,点击获取 简介:SwipeRefreshLayout是Android SDK中的一个布局组件,主要用于实现下拉刷新功能,常用于列表或网格视图的顶部。本指南详细介绍了SwipeRefreshLayout的基本结构、使用方法、自定义行为和实际应用,涵盖了如何通过XML布局和Java代码进行配置,以及如何控制刷新状态、自定义颜色方案和刷新动画。此外,本指南...

weixin_29476595的博客 3565

android智能刷新SmartRefreshLayout框架

智能刷新框架SmartRefreshLayout

leveretz的博客 7241

代码生成 | 安时积分法模型搭建

安时积分法是电池电量计量最基础的方法,今天我们用simulink建模的方式做一个安时积分模型,从而更好地理解安时积分的思想也掌握建模的基础操 ​新建文件 打开MATLAB启动simulink新建一个模型文件 定义变量 和手写代码一样,先定义几个后面要用到的变量,在simulink建模时新建变量用Data Store Memory模块。双击填入要定义的变量名,然后在signal attributes赋初值 如此方法新建四个变量current(电流)初值1000mA、tatol_cap(总容量

ningvay的博客 1万+

Windows批处理脚本实战:用Ping命令打造简易网络监控工具(附完整代码)

本文介绍如何利用Windows批处理脚本和Ping命令,快速构建一个轻量级、自动化的网络监控工具。该方案无需额外安装软件,通过周期性探测目标IP连通性,并将结果(成功、失败及延迟)自动记录到带时间戳的日志文件中,适合中小团队或临时监控需求,实现低成本、高效率的网络状态监控。

5f4d3s2a1q的博客 494

Android SwipeRefreshLayout 原理与高可用实践指南

SwipeRefreshLayout 是 Android 中实现下拉刷新的标准控件,其本质是一个基于事件拦截与 ValueAnimator 驱动的 ViewGroup,通过封装手势识别、滚动状态判断和 Material 规范动画,为开发者提供开箱即用的刷新体验。它依赖 canChildScrollUp() 判断是否触发刷新,内部通过 mTarget 机制协调子 View 滚动行为,在 RecyclerView、NestedScrollView 等场景中需特别注意嵌套滚动兼容性。其技术价值在于极低的接入成本、

weixin_34195546的博客 371

智能车竞赛卡丁快跑组:自动驾驶与人车交互技术实战解析

本文深入解析了智能车竞赛卡丁快跑组的技术核心,重点探讨了自动驾驶与人车交互两大模块的实战方案。文章详细拆解了从环境感知、路径规划到语音识别、命令执行的完整流程,并分享了基于单片机平台的调试心法与赛场经验,为参赛者提供了一套从零开始、分步攻坚的系统性备赛指南。

f0g1h2的博客 1177

Android解决下拉刷新控件SwipeRefreshLayout和ViewPager的滑动冲突

直接说明下我自己项目中的情况,如图: 外部嵌套任何一种refresh下拉控件之后,上方的viewpager左右滑动事件都受到影响,滑动不流畅,稍微有点向下的趋势就会触发刷新。 起初以为可能跟不同下拉控件也有关系然后尝试了很多种方式,最后用到SwipeRefreshLayout才意识到然并卵(摊手),于是就SwipeRefreshLayout上做调整了。 中间试过很多网上的事件分...

djh10000的博客 261

芯片低功耗设计实战:CPF与UPF流程选择指南(附工具对比)

本文深入探讨了芯片低功耗设计实战中CPF与UPF流程的选择策略。文章从两者本质差异与演进脉络出发,结合Cadence与Synopsys工具链的深度支持实况,为工程师提供了基于项目场景的决策框架。重点分析了在混合工具链环境下如何实施流程与验证,并强调了利用Spyglass等工具确保功耗意图无损传递的关键技巧,旨在帮助团队做出明智的流程抉择,提升设计效率与可靠性。

weixin_29197051的博客 405

ADS许可证配置全攻略:从破解文件放置到环境变量设置(实测有效版)

本文详细介绍了ADS许可证配置的全流程,包括环境准备、全新安装、破解文件部署和环境变量设置等关键步骤。针对常见的安装和授权问题,提供了实测有效的解决方案,帮助工程师快速完成ADS的配置与优化。

websocket5live的博客 377

SwipeRefreshLayout配合RecyclerView实现下拉刷新和上拉加载更多以及没有数据的显示

http://blog.youkuaiyun.com/lovexieyuan520/article/details/50589412(转) SwipeRefreshLayout配合RecyclerView实现下拉刷新和上拉加载更多以及没有数据的显示 标签: SwipeRefreshLayoutRecyclerViewCardView下拉刷新上拉加载更多 2016-01-26 20:0

u010507199的专栏 4573

我正用AI Agent重构传统GIS 核心功能,说大白话做空间分析

GeoAI-UP项目通过AI Agent技术实现自然语言驱动的空间分析,核心创新包括: 意图识别层:通过LLM理解用户需求,自动拆解为可执行目标 智能任务规划:动态生成分析流程,处理复杂依赖关系 统一算子架构:采用标准化接口封装200+空间分析功能 可视化工作流。

专注GIS软件开发。 496

SwipeRefreshLayout下拉刷新与SwipeMenuListView侧滑滑动冲突问题解决

    最近在项目开发中需要使用到SwipeRefreshLayout的下拉刷新以及SwipeMenuListView的侧滑删除功能,在两者结合使用时,发现在侧滑时,很容易导致SwipeRefreshLayout的刷新图标也会跟着显示出来,容易造成列表卡顿,很明显,SwipeMenuListView侧滑操作与SwipeRefreshLayout下拉刷新操作产生了滑动冲突问题,如下demo例图所示:...

okg0111的博客 1144

【Unity-UGUI控件全面解析】| Layout自动布局组件详解

UGUI中有个自动布局组件Auto Layout,主要包含下面几个模块(点击可进入官方文档下查看描述): 自动布局 布局元素 (Layout Element) 水平布局组 (Horizontal Layout Group) 垂直布局组 (Vertical Layout Group) 网格布局组 (Grid Layout Group) 内容大小适配器 (Content Size Fitter) 自动布局系统 基于布局元素和布局控制器的概念。一个布局元素是具有矩形变换以及其他可选组件的游戏对象。布局元素对自身

努力前行,总会成为自己心中的那道光 2万+

主题035:计算流体力学(CFD)

计算流体力学(Computational Fluid Dynamics, CFD)是利用数值方法求解流体流动、传热传质等问题的学科。CFD已成为化学反应工程中反应器设计和优化的重要工具。∂ρ∂t+∇⋅(ρu)=0 \frac{\partial \rho}{\partial t} + \nabla \cdot (\rho \mathbf{u}) = 0 ∂t∂ρ​+∇⋅(ρu)=0对于不可压缩流动:∇⋅u=0 \nabla \cdot \mathbf{u} = 0 ∇⋅u=0动量方程:∂(ρu)∂t+∇⋅(ρ

kkchenjj的博客 266

android SwipeRefreshLayout嵌套Webview滑动冲突问题解决

最近有一个需求,需要在网页中实现下拉刷新功能,这里遇到一个坑,加载网页的时候webview向上滑动不了了,看了一下网上的资料尝试过后都没有用,所以在这里做一下记录,希望可以帮到大家,由于两个控件都有滑动的事件,在向下滑动的时候滑动事件被SwipeRefreshLayout控件优先覆盖了,这里的话可以监听webview的滑动事件对SwipeRefreshLayout是否允许下拉刷新进行控制。 1...

weixin_34056162的博客 524

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

利用NestedScrolling机制改造SwipeRefreshLayout

一、NestedScrolling机制 二、改造SwipeRefreshLayout

Get_Zoom的博客 7285

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SwipeRefreshLayout(下拉刷新)嵌套ViewPager时产生的滑动(不畅)冲突

1.重写  SwipeRefreshLayout /** * 时间: 2016/8/4 17:22 * ---ZWQ--- */ public class SwipeRefreshLayout extends android.support.v4.widget.SwipeRefreshLayout { private static final String TAG = "Swipe

WebBean的博客 600

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Android SwipeRefreshLayout+ViewPager+ScrollView 滑动冲突解决

*项目中用到了SwipeRefreshLayout+ViewPager(轮播图)+ScrollView的组合,发现滑动效果很不友好,只有在水平的情况下viewpager才会滑动.影响用户体验. 首先可以确认是滑动冲突产生的影响. 个人因为是Viewpager出现的问题,我重写了ViewPager,当Y轴变化量大于X轴变化量时,对外一个监听,使其关闭其相应的滑动事件.发现时好时坏,

韩尛鬼的博客 637

SmartRefreshLayout基本使用(下拉刷新、上拉加载)

SmartRefreshLayout 的 github地址:https://github.com/scwang90/SmartRefreshLayout 介绍 一个智能下拉刷新、上拉加载框架, 扩展性强. 先上效果图 1. 导入依赖 app下的build.gradle加入 // 下拉刷新,上拉加载 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.3' // 没有使用特殊Header,..

qq_19688207的博客 3万+

SwipeRefreshLayout 详细使用介绍

SwipeRefreshLayout是官方提供的下拉刷新解决控件,具有使用简单,灵活等特点。不足的地方,不可以自定义刷新的头部和加载更多功能。不过通过修改SwipeRefreshLayout可以轻松实现这些功能,本文只介绍使用和对各个方法进行说明。在实际开发中多对SwipeRefreshLayout二次封装,更改刷新UI。SuperEasyRefreshLayout是一个非常强大的二次封装控件,不仅美化了刷新UI,而且可以根据需要自定义UI效果的View,且实现了上拉加载更多的功能。

syfyyds12138的博客 2199

下拉刷新布局SwipeRefreshLayout的使用

可使用SwipeRefreshLayout(下拉刷新布局)创建需要刷新的界面。

m0_57150356的博客 1613

SwipeRefreshLayout

SwipeRefreshLayout是用于实现下拉刷新的核心类,使用很简单只需要使用SwipeRefreshLayout将Recyclerview包裹一下就行。 使用: xml: <androidx.swiperefreshlayout.widget.SwipeRefreshLayout android:id="@+id/srl" android:layout_width="match_parent" android:layout_height="match_par

qq_35698774的博客 2039

Android智能刷新框架之——SmartRefreshLayout详解

Android智能刷新框架之——SmartRefreshLayout详解 最近在项目中有用到一个刷新框架,在仔细的学习并应用后,便写下了如下的这篇详解,用于帮助Android初级开发者的学习 下面从一个小demo帮助你快速上手体验SmartRefreshLayout ...

lian123456780的博客 4723

【Android -- 开源库】SmartRefreshLayout 的基本使用

SmartRefreshLayout 以打造一个强大,稳定,成熟的下拉刷新框架为目标,并集成各种的炫酷、多样、实用、美观的 Header 和 Footer。 正如名字所说,SmartRefreshLayout 是一个“聪明”或者“智能”的下拉刷新布局,由于它的“智能”,它不只是支持所有的 View ,还支持多层嵌套的视图结构。......

Kevin Learn Android 3856
上一篇: Android开发:通过ADB安装手表或者手机App
下一篇: Android开发:Material Design 系列讲解
android157
博客等级 码龄9年 193粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值