多狀態頁面的使用
阿新 • • 發佈:2018-12-31
我們在做Android 程式開發的時候,總是會遇到頁面展示問題,,比如頁面無資料時候,顯示什麼狀態, 網路連線異常的時候,顯示什麼介面, 正常情況下顯示什麼介面,新增頭條目,尾條目等等問題, 這個時候要是能有一個統一的對這些狀態做一個封裝,讓每個頁面都可以使用的話,就可以減少這種多狀態下的,重複寫程式碼.
下面是這個依賴的連結地址:https://github.com/hss01248/PageStateManager
使用方法:
在activity中啟用:
MyPageManager.initWhenAppOnCreate(getApplicationContext(),R.layout.pager_empty,R.layout.loading_page_manager,R.layout.pager_error);
其中引數2,引數3,引數4,分別對應的是,無資料顯示的佈局;載入中的顯示的佈局;載入失敗展示的佈局.
然後在activity中 的oncreat() 方法中,
/** * * @param container 必須為activity或者view.如果是view,則該view物件必須有parent * @param retryAction 點選重試的動作,注意,只需要關注有網路的情況,無網路狀態時已經封裝好:彈出對話方塊詢問使用者是否去設定網路 * @param isShowLoadingOrContent 第一次是顯示loading(true)還是content(false) * @return 當前頁面的狀態管理器 */ public static PageManager init(final Object container, boolean isShowLoadingOrContent ,final Runnable retryAction) //封裝後使用: public static MyPageManager init(final Object container, final MyPageListener pageListener){ PageManager manager = PageManager.generate(container, true,pageListener); MyPageManager myPageManager = new MyPageManager(); myPageManager.pageManager = manager; return myPageManager; } //其中,MyPageListener繼承PageListener,並提供一個全域性處理retry時無網路的情況: @Override public void onRetry(View retryView) { if (!isNetWorkAvailable(retryView.getContext())) { onNoNetWork(retryView); } else { onReallyRetry(); } } public void onNoNetWork(View retryView) { if(retryView.getContext() instanceof Activity){ showNoNetWorkDlg((Activity) retryView.getContext()); }else { //todo } } protected abstract void onReallyRetry();
如: 其中的出入的llError是頁面title下面的layout佈局
myPageManager = MyPageManager.init(llError, new MyPageListener() {
@Override
protected void onReallyRetry() {
myPageManager.showLoading();
//相關操作
}
});
網路無法連線下的顯示,介面返回錯誤的顯示,內容顯示
//網路錯誤時候的顯示
myPageManager.showEmpty("未載入到資料,點選下面按鈕重新整理重試~~");
//載入成功後的顯示佈局
myPageManager.showContent();
//顯示錯誤的顯示
myPageManager.showError(msg);
載入框的 dismiss() 自己不用處理,框架內部已經處理好了,發生這幾個狀態後,會自動消失!