NetworkStateView:界面多状态加载
转载请注明出处:http://blog.youkuaiyun.com/AlarmZ/article/details/70207568
在项目中经常需要进行不同状态的加载,例如在网络请求时的加载中状态,加载失败状态,没有网络状态和没有数据的状态等,之前在项目中的做法是把几个不同的状态布局都添加到需要进行状态切换的Activity或Fragment的布局文件当中,接着再对每一个状态界面进行相应的隐藏显示,但是在界面一多的情况下,重复操作就会显得很繁琐。
在进行了无数次这样繁琐的操作后,有些受不了了,就想着能不能把这几种状态都封装到同一个View中,在需要显示不同的状态时只需要调用相应的状态方法就可以进行切换,这样可比上一种方法简便得多,哈哈,这当然是可以的,接下来就介绍一下NetworkStateView。
NetworkStateView继承自LinearLayout,在里面定义了加载成功,加载中,加载出错(这里只统一定义为网络出错,当然了用在哪种出错方式上可以由你自己决定),没有网络,没有数据五种状态,其中加载成功表示用来显示Activity或Fragment的界面,并用变量mCurrentState来记住当前显示的状态,相应的变量值如下:
//当前的加载状态
private int mCurrentState;
private static final int STATE_SUCCESS = 0;
private static final int STATE_LOADING = 1;
private static final int STATE_NETWORK_ERROR = 2;
private static final int STATE_NO_NETWORK = 3;
private static final int STATE_EMPTY = 4;
接着需要自定义属性,用于传入对应的状态布局文件,在同一种状态中如果需要有不同的界面显示,便可以对应的传入layout文件,这样可以方便扩展
<declare-styleable name="NetworkStateView">
<!-- 加载中的布局id -->
<attr name="loadingView" format="reference" />
<!-- 加载错误的布局id -->
<attr name="errorView" format="reference" />
<!-- 加载错误的布局图片 -->
<attr name="nsvErrorImage" format="reference" />
<!-- 加载错误的布局文字 -->
<attr name="nsvErrorText" format="string" />
<!-- 没有数据的布局id -->
<attr name="emptyView

NetworkStateView是一个封装了加载中、加载失败、无网络、无数据等多种状态的视图,它简化了Android应用中处理网络请求状态的复杂性。通过自定义属性传入布局文件,可以方便地切换不同状态界面,减少重复代码。此外,还提供了刷新功能的接口,便于用户重新请求网络。
最低0.47元/天 解锁文章
2774

被折叠的 条评论
为什么被折叠?



