Android的多状态布局,可包括:加载中、加载出错、无数据、网络异常和正文内容布局。根据不同请求结果显示不同的布局,给人更加直观的感受,也更容易为用户所接受。
StatefulLayout
一个提供多状态布局的布局框架,支持自定义状态布局,提供默认5种状态布局内容:加载中、出错、空数据、离线、未打开定位。可全局配置他们的展现形式,也可以自定义布局样式。
- 演示效果
- 使用案例
<com.xuexiang.xui.widget.statelayout.StatefulLayout
android:id="@+id/ll_stateful"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:background="#e2e2e2"
app:stf_animationEnabled="true"
app:stf_inAnimation="@android:anim/slide_in_left"
app:stf_outAnimation="@android:anim/slide_out_right">
<include layout="@layout/layout_content_view" />
</com.xuexiang.xui.widget.statelayout.StatefulLayout>
- 属性表: (StateLayout)
属性名 | 类型 | 默认值 | 备注 |
---|---|---|---|
stf_animationEnabled | boolean | true | 是否启用切换动画 |
stf_inAnimation | reference | android.R.anim.fade_in | 进入的动画 |
stf_outAnimation | reference | android.R.anim.fade_out | 退出的动画 |
常用方法
显示正文布局:showContent();
显示加载中布局:
showLoading()
showLoading(String message)
- 显示空内容布局:
showEmpty()
showEmpty(String message)
- 显示出错布局:
showError(OnClickListener clickListener)
showError(String message, OnClickListener clickListener)
showError(String message, String buttonText, OnClickListener clickListener)
- 显示离线(网络异常)布局:
showOffline(OnClickListener clickListener)
showOffline(String message, OnClickListener clickListener)
showOffline(String message, String buttonText, OnClickListener clickListener)
显示自定义布局:showCustom(final CustomStateOptions options)
设置全局多状态样式的方法:使用
UIConfig
的setStatefulLayoutConfig(StateLayoutConfig config)方法即可。
MultipleStatusView
一个提供布局状态切换管理的布局,支持:加载中、出错、空数据、离线和正文这5中状态布局。可以获得当前布局的状态,布局通过属性设置加载,当然也提供了默认的状态布局。
- 演示效果
- 使用案例
<com.xuexiang.xui.widget.statelayout.MultipleStatusView
android:id="@+id/multiple_status_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="?attr/xui_actionbar_height"
app:msv_contentView="@layout/layout_content_view"/>
- 属性表: (MultipleStatusView)
属性名 类型 默认值 备注 msv_loadingView reference R.layout.msv_loading_view 加载页面的布局 msv_errorView reference R.layout.msv_error_view 错误页面的布局 msv_emptyView reference R.layout.msv_empty_view 空页面的布局 msv_noNetworkView reference R.layout.msv_no_network_view 没有网络的页面布局 msv_contentView reference / 主内容页面的布局
常用方法
- 获取当前状态:int getViewStatus()
- 设置重试点击事件:setOnRetryClickListener(OnClickListener onRetryClickListener)
- 显示空视图:showEmpty()
- 显示错误视图:showError()
- 显示加载中视图:showLoading()
- 显示无网络视图:showNoNetwork()
- 显示内容视图:showContent()
【注意】:自定义的状态布局的根布局一定要设有控件的ID,否则可能导致切换异常。
StatusView
可自定义状态显示的悬浮布局,常用于网络状态的信息提示等。
- 演示效果
- 使用案例
mStatusView.setStatus(Status.COMPLETE); //成功的状态
mStatusView.setStatus(Status.ERROR); //出错的状态
mStatusView.setStatus(Status.LOADING); //加载中的状态
mStatusView.setStatus(Status.NONE); //无状态
- 属性表: (StatusView)
属性名 | 类型 | 默认值 | 备注 |
---|---|---|---|
sv_complete | reference | R.layout.msv_loading_view | 加载页面的布局 |
sv_error | reference | R.layout.msv_error_view | 错误页面的布局 |
sv_loading | reference | R.layout.msv_empty_view | 空页面的布局 |
sv_custom | reference | R.layout.msv_no_network_view | 没有网络的页面布局 |
sv_dismissOnComplete | boolean | / | 主内容页面的布局 |