多状态页面的使用

我们在做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() 自己不用处理,框架内部已经处理好了,发生这几个状态后,会自动消失!

猜你喜欢

转载自blog.csdn.net/wolfking0608/article/details/85324226