距离上次发文又过了一年,此次我给你们带来了另外一个开源库 SmartRefreshHorizontal。先看看效果:php
下载 APK-Demojava
商品详情 | ViewPager |
---|---|
![]() |
![]() |
数据演示 |
---|
![]() |
SmartRefreshLayout 的设计灵活多样,扩展性高,我想这应该是它受欢迎的缘由之一。 在 issue 区有很多人建议让 SmartRefreshLayout 支持横向刷新。 其实你们都知道横向刷新的库已经有了很多,我给他们的回复是使用其余现有的横向刷新库。 但这在 issue 引起热议,多是那些横向刷新库的使用、功能、扩展与 SmartRefreshLayout有很大差距。 因此我本身认为要作横向刷新库也须要可以像 SmartRefreshLayout 同样的多功能与易扩展。 若是直接扩展 SmartRefreshLayout 的功能使其直接支持横向,将会增长代码量。 然而当此时它已经足够庞大,而且也有很多人抱怨它太大须要分包细化功能。因此一开始的时候我几乎没有开发横向刷新功能的想法。 由于用到横向刷新的应用场景比竖向刷新少不少,我本身也不多会用到这样的场景。 若是为了实现一个我本身不经常使用的功能库要花费我太多时间和精力实在划不来,仅仅实现一个简单的横向刷新又没有必要...android
终于!有一天我在开发旋转动画过程当中,产生了一个奇妙的想法:若是把 SmartRefreshLayout 旋转90度会怎样? 而后开始作试验:把 SmartRefreshLayout 旋转90度,再把 Content 旋转-90度。结果居然真的能够用!! 这样就不用让我花大量时间精力去作横向刷新代码实现,SmartRefreshLayout 原有的全部功能多能够直接使用, 以前设计的十多个 Header 和 Footer 也能够不用任何修改直接使用!这让我产生了开发横向刷新库的动力。 因而基于这个试验想法就诞生了这个 SmartRefreshHorizontal 库 !git
SmartRefreshHorizontal 做为 SmartRefreshLayout 的扩展库,实现了横向刷新和加载的功能, 虽然是独立的开源库,可是并无重复作实现, 而是对 SmartRefreshLayout 作了封装和转换,使其支持横向刷新。 因此 SmartRefreshHorizontal 继承了 SmartRefreshLayout 全部的特性,只是方向改为了横向。github
明白了 SmartRefreshHorizontal 与 SmartRefreshLayout 的关系,那么你们在使用本库的使用同时也要依赖 SmartRefreshLayout,而且版本要大于 1.1.0 ,不然会出现找不到类的错误。app
implementation 'com.scwang.smartrefresh:SmartRefreshHorizontal:1.0.0-beta-1'
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'//必须依赖 版本 1.1.0 以上
//androidx
implementation 'com.scwang.smartrefresh:SmartRefreshHorizontal:1.0.0-andx-1'
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-andx-16'//必须依赖 版本 1.1.0-andx-16 以上
复制代码
<?xml version="1.0" encoding="utf-8"?>
<com.scwang.smartrefresh.horizontal.SmartRefreshHorizontal xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/refreshLayout" android:layout_width="match_parent" android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" android:overScrollMode="never" android:orientation="horizontal" android:background="#fff" />
</com.scwang.smartrefresh.horizontal.SmartRefreshHorizontal>
复制代码
RefreshLayout refreshLayout = root.findViewById(R.id.refreshLayout);
refreshLayout.setRefreshHeader(new MaterialHeader(root.getContext()));
refreshLayout.setRefreshFooter(new RefreshFooterWrapper(new MaterialHeader(root.getContext())), -1, -2);
复制代码
SmartRefreshHorizontal 不须要添加混淆过滤代码,而且已经混淆测试经过,若是你在项目的使用中混淆以后出现问题,请及时通知我。布局