Android:使用LoadingLayout來展示載入資料時不同狀態

MichaelX發表於2019-02-28

LoadingLayout簡介

LoadingLayout是一個應用於Android中的載入資料時不同狀態的類庫(實質是一個自定義控制元件)。
專案地址:github.com/xiong-it/Lo… 歡迎體驗。

Compile

開啟你的app module中的build.gradle,新增依賴:

compile `tech.michaelx.loadinglibrary:loadinglibrary:1.0.2`複製程式碼

Sample

在layout的xml中使用如下:

<?xml version="1.0" encoding="utf-8"?>
<tech.michaelx.loadinglibrary.LoadingLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/loading_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:contentDescription="loadingBackground可以是drawable或者顏色"
    android:padding="10dp"
    app:emptyView="@layout/empty_layout"
    app:errorView="@layout/failure_layout"
    app:loadingAnimator="@animator/loading"
    app:loadingBackground="#1296db"
    app:loadingView="@layout/loading_layout"
    app:retryLoadAlways="true"
    app:showLoadingDebug="true">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="本頁面使用屬性自定義loading各種狀態" />

</tech.michaelx.loadinglibrary.LoadingLayout>複製程式碼

常用自定義屬性

app:loadingView="@layout/loading_layout" :指定載入時的展示佈局,可以為空,為空時使用系統預設ProgressBar
app:loadingAnimator="@animator/loading":只用上述屬性制定時,該屬性方可生效,作用於載入佈局的動畫
app:loadingBackground="#1296db":指定載入過程中頁面背景,可以是顏色或者drawable,預設為adnroid:color/white
app:emptyView="@layout/empty_layout":指定了資料為空時的展示佈局,可以為空,有預設佈局,詳細可看下方演示gif圖
app:errorView="@layout/failure_layout":指定載入失敗時的展示佈局,可以為空,有預設佈局,詳細可看下方演示gif圖
app:retryLoadAlways="true":是否開啟資料為空時點選重試,預設為false
app:showLoadingDebug="true":是否開啟佈局預覽除錯,預設為false,開啟後可以在AS中正常預覽佈局檔案,打包時請一定寫false!

其他更多屬性請看

<resources>
    <declare-styleable name="LoadingLayout">
        <!--設定資料為空的layout-->  
        <attr name="emptyView" format="reference" />
        <!--設定載入失敗的layout-->  
        <attr name="errorView" format="reference" />
        <!--設定載入中的layout-->  
        <attr name="loadingView" format="reference" />
        <!--設定載入動畫id-->  
        <attr name="loadingAnimator" format="reference" />
        <!--設定載入中的背景,或者顏色-->  
        <attr name="loadingBackground" format="reference|color" />
        <!--設定預設Progressbar的progress_drawable-->  
        <attr name="loadingProgressDrawable" format="reference" />
        <!--設定資料為空時的圖片-->  
        <attr name="emptyDrawable" format="reference" />
        <!--設定資料為空時的提示語-->  
        <attr name="emptyText" format="string" />
        <!--設定載入失敗時的圖片-->  
        <attr name="errorDrawable" format="reference" />
        <!--設定載入失敗時的提示語-->  
        <attr name="errorText" format="string" />
        <!--設定是否總是點選重試,無論資料為空或者失敗,預設false-->  
        <attr name="retryLoadAlways" format="boolean" />
        <!--設定自動顯示載入除錯-->  
        <attr name="showLoadingDebug" format="boolean" />
    </declare-styleable>
</resources>複製程式碼

Activity/Fragment程式碼中

// 初始化佈局物件  
mLoadingLayout = (LoadingLayout) findViewById(R.id.loading_layout);  

// 載入完畢/載入成功  
mLoadingLayout.loadComplete();  

// 資料為空  
mLoadingLayout.showEmpty();  

// 載入失敗  
mLoadingLayout.loadFailure();  

// 設定點選重試監聽  
mLoadingLayout.setOnRetryLoadListener(OnRetryLoadListener);  

// 顯示載入中  
// 程式碼呼叫了setLoadingView(),才需要手動呼叫showLoading()
mLoadingLayout.showLoading();複製程式碼

效果圖

載入中,載入完成,資料為空,載入失敗,點選重試 幾種狀態演示gif

載入幾種狀態演示
載入幾種狀態演示

注意事項

LoadingLayout需要依賴於appcompat-v7 &support-annotations,請在工程中新增這兩個依賴(版本可自定義,不建議低於25.3.1):

compile "com.android.support:appcompat-v7:25.3.1"  
compile `com.android.support:support-annotations:25.3.1`複製程式碼

專案地址

感謝閱讀,歡迎體驗:github.com/xiong-it/Lo…

相關文章