1. 程式人生 > >多狀態頁面的使用

多狀態頁面的使用

我們在做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() 自己不用處理,框架內部已經處理好了,發生這幾個狀態後,會自動消失!