StateLayout android
--高自由度,使用简洁
--是一个把空布局 错误布局 加载布局 内容布局整合成一个View的布局
--仅提供的是思路,封装什么动画,根据本身项目,在show方法添加启动动画,或移除动画
[Github地址 ](https://github.com/fingdo/stateLayout/blob/master/README-zh.md)git
不要直接点击 复制地址去找github
使用流程:网络
1.build.gradle中maven
allprojects { repositories { maven { url "https://jitpack.io" } } }
2.导入依赖ide
//Statelayout 界面状态快速切换 implementation 'com.github.sushanqiang:StatelayoutLibrary:v1.0.0'
3.XML布局布局
<com.sushanqiang.statelayout.StateLayout android:background="@color/colorFFFFFF" xmlns:sl="http://schemas.android.com/apk/res-auto" android:id="@+id/no_state_layout" android:layout_width="match_parent" android:layout_height="match_parent" sl:emptyImg="@drawable/ic_state_empty" sl:emptyText="空数据提示文字" sl:errorImg="@drawable/ic_state_error" sl:errorText="错误提示文字" sl:loadingText="加载提示文字" sl:loginImg="@drawable/ic_state_login" sl:loginText="登陆提示文字" sl:noNetworkImg="@drawable/ic_state_no_network" sl:noNetworkText="没有网络提示文字" sl:timeOutImg="@drawable/ic_state_time_out" sl:timeOutText="超时提示文字"> <!-- 内容布局 one root view --> </com.sushanqiang.statelayout.StateLayout>
4.调用设置gradle
//调用不一样的样式 stateLayout.showEmptyView(); //设置页面文字图标 stateLayout.setTipText(StateLayout.EMPTY, "网居然崩溃了,别紧张,刷新试试"); stateLayout.setTipImg(StateLayout.EMPTY, R.mipmap.common_load_net_error); stateLayout.setUseAnimation(true);
//显示没有网络视图 stateLayout。showNoNetworkView(); //显示超时视图 stateLayout。showTimeoutView(); //显示空的视图 stateLayout。showEmptyView(); //显示错误视图 stateLayout。showErrorView(); //显示登陆视图 stateLayout。showLoginView();
//显示加载视图 stateLayout。showLoadingView();
1,显示 2,显示什么时候设置字符串Id 3,显示什么时候设置字符串 4,显示什么时候设置自定义视图,例如: 1)进度条 2)gif imageView 3)自定义视图
5.设置点击刷新 和登录动画
stateLayout.setRefreshListener(new StateLayout.OnViewRefreshListener() { //刷新 @Override public void refreshClick() { toast = new QMUITipDialog.Builder(NoActivity.this) .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) .setTipWord("正在加载") .create(); toast.show(); //登录接口验证 mPresenter.loadData(Concat.LANDINGTEXT); } //登录 @Override public void loginClick() { } });
6.设置自定义页面ui
默认是false
//使用动画 stateLayout。setUseAnimation( true);
若是您未设置自定义动画,则默认为FadeScaleViewAnimProvider
动画,若是您要设置自定义动画
//设置anmtion stateLayout。setViewSwitchAnimProvider(新的 FadeScaleViewAnimProvider());
stateLayout
如今有2个动画
//淡入淡出动画 FadeScaleViewAnimProvider //淡入淡出动画 FadeViewAnimProvider
若是你想设置自定义你的动画,请执行 ViewAnimProvider
重写showAnimation
和hideAnimation
方法。
//FadeViewAnimProvider.class public class FadeViewAnimProvider implements ViewAnimProvider { @Override public Animation showAnimation() { Animation animation = new AlphaAnimation(0.0f,1.0f); animation.setDuration(200); animation.setInterpolator(new DecelerateInterpolator()); return animation; } @Override public Animation hideAnimation() { Animation animation = new AlphaAnimation(1.0f,0.0f); animation.setDuration(200); animation.setInterpolator(new AccelerateDecelerateInterpolator()); return animation; } }
设置样式参数
Styleable parameter
< declare-styleable name = “ StateLayout ” > <! - error tip image - > < attr name = “ errorImg ” format = “ reference ” /> <! - error tip text - > < attr name = “ errorText “ format = ” string “ /> <! -空的提示图像- > <attr name = “emptyImg “ format = ” reference “ /> <! - empty tip text - > < attr name = ” emptyText “ format = ” string “ /> <! - no network tip image - > < attr name = ” noNetworkImg “ format = ” reference “ /> <! -没有网络提示文本- > <attr name = “noNetworkText “ format = ” string “ /> <! - timeout tip image - > < attr name = ” timeOutImg “ format = ” reference “ /> <! - timeout tips text - > < attr name = ” timeOutText “ format = “ string ” /> <! -登陆提示图像- > <attr name = “loginImg “ format = ” reference “ /> <! -登陆提示文本- > < attr name = ” loginText “ format = ” string “ /> <! - loading tip text - > < attr name = ” loadingText “ format = ” string “ /> </ declare-styleable >