【Android】StateUi 框架

NightCat雨發表於2016-12-22

很多android專案一旦接觸了網路,就肯定跟狀態佈局打交道,我的這個StateUi就是專門為了儘可能簡化,避免寫一個介面就要新增狀態佈局的引用,採用了純動態新增的方式將你預設的佈局載入到介面上。


新增依賴

在你的project 的 build.gradle 中加入

allprojects {
    repositories {

        maven { url 'https://jitpack.io' }
    }
}

然後在你的app 的 build.gradle 中加入

dependencies {
        compile 'com.github.1015156849:StateUi:0.0.2'
}

或者 檢視最新

使用方法

需要使用到的Activity請繼承

BaseUIActivity

需要使用到的Fragment請繼承

BaseUIFragment

推薦你去繼承一個 StateUi 類,這個類預設有一個

    public static final int ShowDatasView = 0; 

你將你所有自定義的狀態佈局的layout放在這裡,例如:

    public class myStateUi extends StateUi {

        /**預設有一個ShowDatasView 該初始值為0*/
        public static final int LoadView= R.layout.state_ui_load;
        public static final int NoNetView= R.layout.state_ui_no_net;
    }

在使用的時候,你只需要給需要顯示的容器設定一個id,然後呼叫

    ShowStateUi(位置容器的id,想顯示的StateUi佈局);

例如:

    /**顯示StateUi(注:該方法中預設先執行了 一次 HideStateUi())*/
    ShowStateUi(R.id.containerView, myStateUi.LoadView);

注意:位置容器只能為 佈局,不可以是Button等控制元件

隱藏狀態佈局

    HideStateUi();

或者

    ShowStateUi(位置容器的id,StateUi中的ShowDatasView);

如果我想給自定義佈局設定一些的控制元件設定監聽怎麼辦?

你可以通過

setOnClick(StateUi佈局,點選監聽,想要設定監聽的控制元件id的List集合);

例如:

/**設定點選事件 (注:必須使用ShowStateUi()顯示 該狀態佈局 後才能對該佈局上的控制元件設定監聽)*/
                setOnClick(myStateUi.NoNetView, new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        switch (v.getId()) {
                            case R.id.NoNetView:
                                Toast.makeText(getActivity(), "點選了圖片", Toast.LENGTH_SHORT).show();
                                break;
                            case R.id.Button:
                                Log.e(TAG, "點選了按鈕");
                                ShowStateUi(R.id.containerView, myStateUi.LoadView);
                                new Handler().postDelayed(new Runnable() {
                                    @Override
                                    public void run() {
                                        ShowStateUi(R.id.containerView, myStateUi.NoNetView);
                                    }
                                }, 3000);
                                break;
                        }
                    }
                }, new ArrayList<Integer>() {{
                    add(R.id.NoNetView);
                    add(R.id.Button);
                }});

附上一張演示效果圖

這裡寫圖片描述

後言

具體使用方法就如上,如果你還有不太明白的話,可以下載專案檢視demo和原始碼

如果你在使用的時候遇到了什麼bug或者好的建議,可以在提issue,或者給我留言。

附上原始碼地址:
https://github.com/1015156849/StateUi

相關文章