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

嵌入式统一消息机制:模块解耦与零拷贝通信设计

在嵌入式系统开发中,模块间通信(IMC)是影响可维护性与实时性的关键环节。传统IPC方式如全局变量、信号量或Socket易导致高耦合、调试困难及跨平台适配成本高。统一消息机制通过逻辑地址抽象、标签/实体分离、路由表驱动等原理,实现控制流与数据流解耦,在裸机、RTOS及Linux用户态保持一致接口。其技术价值在于降低模块依赖复杂度、支持动态增删与分布式迁移,并通过零拷贝优化显著减少CPU与内存开销。典型应用场景涵盖工业网关、城域交换机、多核ARM边缘设备等资源受限环境,尤其适用于需长期稳定运行、快速迭代与混合

weixin_35257663的博客 257

yolov5部署之七步完成tensorRT模型推理加速

目录前言step 1. 下载yolov5源码以及tensorrtx源码,并将yolov5s.pt转为.wts模型step 2. 确定并下载自己准备使用的CUDA版本。step 3. 根据自己的CUDA版本下载对应版本的cuDNN以及TensorRTstep 4. 根据自己使用的VS版本下载对应版本的OpenCVstep 5. 安装CUDAstep 6. 安装cuDNN、TensorRT以及验证TensorRT是否安装成功 前言     前段时间研究了Pytorch的环境配置,之后便从github上下载了yo

Christo的博客 4万+

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

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

weixin_34195546的博客 371

量子阱技术解析:从基础原理到前沿应用

本文深入解析量子阱技术,从微观“能量游泳池”的基础原理出发,阐释了其通过限制电子实现能级量子化,从而精确调控发光波长的核心机制。文章详细探讨了量子阱在半导体激光器和LED中的革命性应用,如实现低阈值电流与高亮度显示,并展望了其在能带工程及量子级联激光器等前沿领域的发展与挑战。

weixin_29267307的博客 282

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

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

djh10000的博客 261

Unity中实现FairyGUI弹窗背景模糊的3种方法对比(附完整代码)

本文详细对比了Unity中实现FairyGUI弹窗背景模糊的3种方法,包括FairyGUI原生滤镜方案、多摄像机混合渲染方案和渲染纹理动态混合方案。每种方法均附有完整代码示例,帮助开发者根据项目需求选择最佳方案,实现镜头虚化模糊效果,提升游戏UI的视觉沉浸感。

ff678的博客 230

ONFI5.0命令字实战指南:从基础操作到高级应用

本文深入解析ONFI5.0协议的核心——命令字,提供从基础操作到高级应用的实战指南。详细拆解了NAND闪存的复位、读状态、数据读取(00-30)、页编程(80-10)和块擦除(60-D0)等关键命令周期,并探讨了多平面操作与缓存操作等高级性能优化技巧,帮助开发者高效、稳定地与NAND芯片进行底层交互。

vscode5coder的博客 462

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

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

u010507199的专栏 4573

yolov8涨点系列之轻量化主干网络替换

yolov8涨点系列之轻量化主干网络替换,以EfficientVit为例

zhang1379的博客 2887

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

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

okg0111的博客 1144

RK3568笔记十七:LVGL v8.2移植

若该文为原创文章,转载请注明原文出处。本文介绍嵌入式图形库移植到Linux开发板ATK-RK3568上的步骤。

4230

openclaw通俗入门系列4——智能体工作区

工作区 = 智能体的家,存放它的性格、记忆、技能。默认不是牢笼(可以用沙箱隔离)。建议放到私有 Git 备份,但绝对不要提交密钥!

m0_60605453的博客 462

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

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

weixin_34056162的博客 524

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

利用NestedScrolling机制改造SwipeRefreshLayout

一、NestedScrolling机制 二、改造SwipeRefreshLayout

Get_Zoom的博客 7285

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

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、付费专栏及课程。

余额充值