查看原文
其他

超炫酷的安卓智能下拉刷新框架

TJ TJ君 2022-05-13

大家好,我是TJ

关注TJ君,回复“武功秘籍”免费获取计算机宝典书籍

TJ君将之前发过的各种项目及工具进行了整理,收录到了GitHub项目,欢迎各位小伙伴光临Star,地址如下:https://github.com/Wechat-TJ/TJ-WORLD-FORU

今天使用安卓手机的小伙伴有福利啦,TJ君准备给大家分享一个安卓智能下拉刷新框架,SmartRefreshLayout,可以结合刷新、上拉加载、二级刷新、淘宝二楼、RefreshLayout、OverScroll等众多功能支持越界回弹、越界拖动,并且具有极强的扩展性,还自带集成了几十种炫酷的Header和 Footer,绝对让你的手机用起来是最靓的那个仔!

SmartRefreshLayout的项目初始目标就是在强大,稳定,成熟的基础上,集成各种的炫酷、多样、实用、美观。它不只是支持所有的View,还支持多层嵌套的视图结构;它继承自ViewGroup 而不是FrameLayout或LinearLayout,提高了性能。也在不断吸收更新现在流行的各种刷新布局的优点,让自己变得更加炫酷!炫酷!炫酷!

主要功能有:

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

同时在V2.x及以上版本中,已经把依赖库拆分成8个包,用到哪个自行引用就可以啦,避免了引入很多很多无用的代码和资源。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 经典加载

简单示例:

1.在build.gradle文件中添加依赖

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

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

如果要使用AndroidX的话,先在gradle.properties文件中添加以下内容:

android.useAndroidX=true
android.enableJetifier=true

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"/>

    <android.support.v7.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表示加载失败
    }
});

让我们一起来看下他实际的动态效果:

觉得不错的小伙伴就赶紧来尝试下吧~

点击下方卡片,关注公众号“TJ君

回复“Smart2022”,获取仓库地址

关注我,每天了解一个牛x、好用、有趣的东东


往期推荐

还记得盘神的传说吗?

支持多平台+高颜值的网易云第三方播放器

基于SpringBoot 适合学习的开源社区平台


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存