超炫酷的安卓智能下拉刷新框架
大家好,我是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、好用、有趣的东东