Android橫向智能刷新框架-SmartRefreshHorizontal

距離上次發文又過了一年,此次我給你們帶來了另外一個開源庫 SmartRefreshHorizontal。先看看效果:php

傳送門

Demo

下載 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

簡單用例

1. 在 build.gradle 中添加依賴

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 以上
複製代碼

2. 在XML佈局文件中添加 SmartRefreshHorizontal

<?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>
複製代碼

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

RefreshLayout refreshLayout = root.findViewById(R.id.refreshLayout);
   refreshLayout.setRefreshHeader(new MaterialHeader(root.getContext()));
   refreshLayout.setRefreshFooter(new RefreshFooterWrapper(new MaterialHeader(root.getContext())), -1, -2);
複製代碼

混淆

SmartRefreshHorizontal 不須要添加混淆過濾代碼,而且已經混淆測試經過,若是你在項目的使用中混淆以後出現問題,請及時通知我。佈局

相關文章
相關標籤/搜索