很多android项目一旦接触了网络,就肯定跟状态布局打交道,我的这个StateUi就是专门为了尽可能简化,避免写一个界面就要添加状态布局的引用,采用了纯动态添加的方式将你预设的布局加载到界面上。
添加依赖
在你的project 的 build.gradle 中加入
allprojects {
repositories {
maven { url 'https://jitpack.io' }
}
}
然后在你的app 的 build.gradle 中加入
dependencies {
compile 'com.github.1015156849:StateUi:0.0.2'
}
或者 查看最新
使用方法
需要使用到的Activity请继承
BaseUIActivity
需要使用到的Fragment请继承
BaseUIFragment
推荐你去继承一个 StateUi 类,这个类默认有一个
public static final int ShowDatasView = 0;
你将你所有自定义的状态布局的layout放在这里,例如:
public class myStateUi extends StateUi {
/**默认有一个ShowDatasView 该初始值为0*/
public static final int LoadView= R.layout.state_ui_load;
public static final int NoNetView= R.layout.state_ui_no_net;
}
在使用的时候,你只需要给需要显示的容器设置一个id,然后调用
ShowStateUi(位置容器的id,想显示的StateUi布局);
例如:
/**显示StateUi(注:该方法中默认先执行了 一次 HideStateUi())*/
ShowStateUi(R.id.containerView, myStateUi.LoadView);
注意:位置容器只能为 布局,不可以是Button等控件
隐藏状态布局
HideStateUi();
或者
ShowStateUi(位置容器的id,StateUi中的ShowDatasView);
如果我想给自定义布局设置一些的控件设置监听怎么办?
你可以通过
setOnClick(StateUi布局,点击监听,想要设置监听的控件id的List集合);
例如:
/**设置点击事件 (注:必须使用ShowStateUi()显示 该状态布局 后才能对该布局上的控件设置监听)*/
setOnClick(myStateUi.NoNetView, new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.NoNetView:
Toast.makeText(getActivity(), "点击了图片", Toast.LENGTH_SHORT).show();
break;
case R.id.Button:
Log.e(TAG, "点击了按钮");
ShowStateUi(R.id.containerView, myStateUi.LoadView);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
ShowStateUi(R.id.containerView, myStateUi.NoNetView);
}
}, 3000);
break;
}
}
}, new ArrayList<Integer>() {{
add(R.id.NoNetView);
add(R.id.Button);
}});
附上一张演示效果图
后言
具体使用方法就如上,如果你还有不太明白的话,可以下载项目查看demo和源码
如果你在使用的时候遇到了什么bug或者好的建议,可以在提issue,或者给我留言。