StateController
顧名思義:狀態(tài)控制機(jī),用作幾個(gè)狀態(tài)的切換幅垮。該控件可以在Loading
& Empty
& Error
& Content
四個(gè)狀態(tài)的自定義動(dòng)畫切換。https://github.com/limedroid/XStateController歡迎star尾组。
特性
- 不受布局層級(jí)的控制忙芒,可任意大小、任意層級(jí)
- 支持xml設(shè)置狀態(tài)布局資源
- 支持java代碼設(shè)置狀態(tài)布局
- 可自定義動(dòng)畫切換狀態(tài)
- 可注冊(cè)狀態(tài)切換回調(diào)
- 支持異常情況的狀態(tài)保存
- 可以設(shè)置一個(gè)或幾個(gè)狀態(tài)讳侨,無需全部狀態(tài)設(shè)置
集成步驟
step1
在根項(xiàng)目的build.gradle
文件中添加
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
step2
添加依賴
dependencies {
compile 'compile 'com.github.limedroid:XStateController:v1.1.0'
}
使用
<cn.droidlover.xstatecontroller.XStateController
android:id="@+id/controller"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:x_emptyLayoutId="@layout/view_empty">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#854678"
android:gravity="center"
android:text="Content"
android:textColor="@android:color/white"
android:textSize="28sp" />
</cn.droidlover.xstatecontroller.XStateController>
說明
- 當(dāng)
XStateController
僅有一個(gè)子view(ViewGroup)時(shí)呵萨,該子view則為ContentView
- 可以通過xml屬性設(shè)置布局,也可代碼設(shè)置
attrs設(shè)置狀態(tài)布局資源
<attr name="x_contentLayoutId" format="reference" />
<attr name="x_loadingLayoutId" format="reference" />
<attr name="x_emptyLayoutId" format="reference" />
<attr name="x_errorLayoutId" format="reference" />
-
x_contentLayoutId
設(shè)置內(nèi)容布局資源 -
x_loadingLayoutId
設(shè)置加載中狀態(tài)的布局資源 -
x_emptyLayoutId
設(shè)置空狀態(tài)的布局資源 -
x_errorLayoutId
設(shè)置錯(cuò)誤狀態(tài)的布局資源
常見api
設(shè)置各狀態(tài)的布局資源
loadingView(loadingView)跨跨; //設(shè)置加載中的view
emptyView(emptyView)潮峦; //設(shè)置空view
errorView(errorView)囱皿; //設(shè)置errorView
contentView(contentView); //設(shè)置contentView
狀態(tài)切換
showLoading(); //切換到loading狀態(tài)
showError(); //切換到error狀態(tài)
showEmpty(); //切換到empty狀態(tài)
showContent(); //切換到content狀態(tài)
注冊(cè)狀態(tài)切換回調(diào)
registerStateChangeListener(xx);
回調(diào)的定義
public interface OnStateChangeListener {
//狀態(tài)切換時(shí)回調(diào),oldState當(dāng)前狀態(tài),newState目標(biāo)狀態(tài)
void onStateChange(int oldState, int newState);
//動(dòng)畫忱嘹,可自定義切換動(dòng)畫
void animationState(View exitView, View enterView);
}
使用時(shí)可直接繼承SimpleStateChangeListener