SkillAgentSearch skills...

SmartRefreshLayout

🔥下拉刷新、上拉加载、二级刷新、淘宝二楼、RefreshLayout、OverScroll,Android智能下拉刷新框架,支持越界回弹、越界拖动,具有极强的扩展性,集成了几十种炫酷的Header和 Footer。

Install / Use

/learn @scwang90/SmartRefreshLayout
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Android智能下拉刷新框架-SmartRefreshLayout

License Arsenal Maven MinSdk Methods

English | 中文

SmartRefreshLayout以打造一个强大,稳定,成熟的下拉刷新框架为目标,并集成各种的炫酷、多样、实用、美观的Header和Footer。 正如名字所说,SmartRefreshLayout是一个“聪明”或者“智能”的下拉刷新布局,由于它的“智能”,它不只是支持所有的View,还支持多层嵌套的视图结构。 它继承自ViewGroup 而不是FrameLayout或LinearLayout,提高了性能。 也吸取了现在流行的各种刷新布局的优点,包括谷歌官方的 SwipeRefreshLayout, 其他第三方的 Ultra-Pull-To-RefreshTwinklingRefreshLayout 。 还集成了各种炫酷的 Header 和 Footer。

IOS版本

IOS版本:链接

国内加速

github 由于你懂的原因,下载速度缓慢,图片也无法查看,可以跳转 Gitee镜像

特点功能:

  • 支持多点触摸
  • 支持淘宝二楼和二级刷新
  • 支持嵌套多层的视图结构 Layout (LinearLayout,FrameLayout...)
  • 支持所有的 View(AbsListView、RecyclerView、WebView....View)
  • 支持自定义并且已经集成了很多炫酷的 Header 和 Footer.
  • 支持和 ListView 的无缝同步滚动 和 CoordinatorLayout 的嵌套滚动 .
  • 支持自动刷新、自动上拉加载(自动检测列表惯性滚动到底部,而不用手动上拉).
  • 支持自定义回弹动画的插值器,实现各种炫酷的动画效果.
  • 支持设置主题来适配任何场景的 App,不会出现炫酷但很尴尬的情况.
  • 支持设多种滑动方式:平移、拉伸、背后固定、顶层固定、全屏
  • 支持所有可滚动视图的越界回弹
  • 支持 Header 和 Footer 交换混用
  • 支持 AndroidX
  • 支持横向刷新
  • 支持IOS

传送门

Demo

下载 APK-Demo

项目演示

|个人首页|微博列表| |:---:|:---:| |||

|餐饮美食|个人中心| |:---:|:---:| |||

样式演示 Style

|Delivery|DropBox| |:---:|:---:| ||| |Refresh-your-delivery|Dropbox-Refresh|

上面这两个是我自己实现的,下面的是我把github上其它优秀的Header进行的整理和集合还有优化:

|BezierRadar|BezierCircle| |:---:|:---:| ||| |Pull To Refresh|Pull Down To Refresh|

|FlyRefresh|Classics| |:---:|:---:| ||| |FlyRefresh|ClassicsHeader|

|Phoenix|Taurus| |:---:|:---:| ||| |Yalantis/Phoenix|Yalantis/Taurus

|BattleCity|HitBlock| |:---:|:---:| ||| |FunGame/BattleCity|FunGame/HitBlock

|WaveSwipe|Material| |:---:|:---:| ||| |WaveSwipeRefreshLayout|MaterialHeader

|StoreHouse|WaterDrop| |:---:|:---:| ||| |CRefreshLayout|WaterDrop

看到这么多炫酷的Header,是不是觉得很棒?这时你或许会担心这么多的Header集成在一起,但是平时只会用到一个,是不是要引入很多无用的代码和资源? V2.x 版本已经把依赖库拆分成8个包啦,用到的时候自行引用就可以啦!

  • refresh-layout-kernel 核心必须依赖
  • refresh-header-classics 经典刷新头
  • refresh-header-radar 雷达刷新头
  • refresh-header-falsify 虚拟刷新头
  • refresh-header-material 谷歌刷新头
  • refresh-header-two-level 二级刷新头
  • refresh-footer-ball 球脉冲加载
  • refresh-footer-classics 经典加载

注:在Demo中有些炫酷的 Header,他们并不具有实用性,所以没有打包上传仓库,所以无法直接添加依赖。 如果你确实想要在App中集成它们,请自行找到对应个 tag 的分支,把对应版本的Header源码拷贝到自己的项目中,作为自定义Header来使用。

需要源码引用的Header如下:

BezierCircleHeader DeliveryHeader DropBoxHeader FlyRefreshHeader FunGameBattleCityHeader FunGameHitBlockHeader PhoenixHeader StoreHouseHeader TaurusHeader WaterDropHeader WaveSwipeHeader

简单用例

1.在 build.gradle 中添加依赖

注:3.x 版本已经发布,主要升级为使用 androidx 替换 support, 并且目前尚未添加新功能, 如果你还需要使用 support 请使用 2.x 版本。

implementation 'androidx.appcompat:appcompat:1.0.0'                 //必须 1.0.0 以上

implementation  'io.github.scwang90:refresh-layout-kernel:3.0.0-alpha'      //核心必须依赖
implementation  'io.github.scwang90:refresh-header-classics:3.0.0-alpha'    //经典刷新头
implementation  'io.github.scwang90:refresh-header-radar:3.0.0-alpha'       //雷达刷新头
implementation  'io.github.scwang90:refresh-header-falsify:3.0.0-alpha'     //虚拟刷新头
implementation  'io.github.scwang90:refresh-header-material:3.0.0-alpha'    //谷歌刷新头
implementation  'io.github.scwang90:refresh-header-two-level:3.0.0-alpha'   //二级刷新头
implementation  'io.github.scwang90:refresh-footer-ball:3.0.0-alpha'        //球脉冲加载
implementation  'io.github.scwang90:refresh-footer-classics:3.0.0-alpha'    //经典加载


2.在XML布局文件中添加 SmartRefreshLayout

<?xml version="1.0" encoding="utf-8"?>
<com.scwang.smart.refresh.layout.SmartRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/refreshLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <com.scwang.smart.refresh.header.ClassicsHeader
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:overScrollMode="never"
        android:background="#fff" />
    <com.scwang.smart.refresh.footer.ClassicsFooter
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</com.scwang.smart.refresh.layout.SmartRefreshLayout>

3.在 Activity 或者 Fragment 中添加代码

RefreshLayout refreshLayout = (RefreshLayout)findViewById(R.id.refreshLayout);
refreshLayout.setRefreshHeader(new ClassicsHeader(this));
refreshLayout.setRefreshFooter(new ClassicsFooter(this));
refreshLayout.setOnRefreshListener(new OnRefreshListener() {
    @Override
    public void onRefresh(RefreshLayout refreshlayout) {
        refreshlayout.finishRefresh(2000/*,false*/);//传入false表示刷新失败
    }
});
refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
    @Override
    public void onLoadMore(RefreshLayout refreshlayout) {
        refreshlayout.finishLoadMore(2000/*,false*/);//传入false表示加载失败
    }
});

使用指定的 Header 和 Footer

1.方法一 全局设置

public class App extends Application {
    //static 代码段可以防止内存泄露
    static {
        //设置全局的Header构建器
        SmartRefreshLayout.setDefaultRefreshHeaderCreator(new DefaultRefreshHeaderCreator() {
View on GitHub
GitHub Stars25.2k
CategoryDevelopment
Updated1d ago
Forks5.0k

Languages

Java

Security Score

100/100

Audited on Mar 27, 2026

No findings