android 界面状态封装,可快速切换,一个view就可以搞定!
2017-04-20 17:08
429 查看
Statelayout 界面状态快速切换
在app使用中会经常切换界面状态,比如,加载中,加载失败,网络错误等等,所以封装了一个工具类。使用起来也非常的简单, 只要在布局文件中声明,并设置各种状态图标,文字等。效果:
使用:
在layout中:
<com.sushanqiang.statelayout.StateLayout xmlns:sl="http://schemas.android.com/apk/res-auto" android:id="@+id/state_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/ll_button1" sl:emptyImg="@drawable/ic_state_empty" sl:emptyText="@string/empty_tip" sl:errorImg="@drawable/ic_state_error" sl:errorText="@string/error_tip" sl:loadingText="@string/loading_tip" sl:loginImg="@drawable/ic_state_login" sl:loginText="@string/no_login_tip" sl:noNetworkImg="@drawable/ic_state_no_network" sl:noNetworkText="@string/no_network_tip" sl:timeOutImg="@drawable/ic_state_time_out" sl:timeOutText="@string/time_out_tip">
public class MainActivity extends AppCompatActivity implements View.OnClickListener{ StateLayout stateLayout; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); stateLayout = (StateLayout) this.findViewById(R.id.state_layout); stateLayout.setUseAnimation(true); stateLayout.showTimeoutView(); // stateLayout.setViewSwitchAnimProvider(new FadeScaleViewAnimProvider()); stateLayout.setRefreshListener(new StateLayout.OnViewRefreshListener() { @Override public void refreshClick() { stateLayout.showLoadingView(); Toast.makeText( MainActivity.this, "刷新", Toast.LENGTH_SHORT).show(); } @Override public void loginClick() { Toast.makeText(MainActivity.this, "登录", Toast.LENGTH_SHORT).show(); } }); findViewById(R.id.btn_content).setOnClickListener(this); findViewById(R.id.btn_empty).setOnClickListener(this); findViewById(R.id.btn_error).setOnClickListener(this); findViewById(R.id.btn_loading).setOnClickListener(this); findViewById(R.id.btn_time_out).setOnClickListener(this); findViewById(R.id.btn_not_network).setOnClickListener(this); findViewById(R.id.btn_login).setOnClickListener(this); findViewById(R.id.btn_custom).setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_content: stateLayout.showContentView(); // stateLayout.setTipText(StateLayout.EMPTY, "12345"); // stateLayout.setTipImg(StateLayout.EMPTY, R.mipmap.ic_launcher); break; case R.id.btn_empty: stateLayout.showEmptyView(); // stateLayout.setTipText(StateLayout.ERROR, "12345"); // stateLayout.setTipImg(StateLayout.ERROR, R.mipmap.ic_launcher); break; case R.id.btn_error: stateLayout.showErrorView(); stateLayout.setTipText(StateLayout.ERROR,"请稍后再试哦"); stateLayout.setTipImg(StateLayout.ERROR, R.mipmap.ic_launcher); // stateLayout.setTipText(StateLayout.LOADING, "12345"); break; case R.id.btn_loading: stateLayout.showLoadingView(); // stateLayout.setTipText(StateLayout.TIMEOUT, "12345"); // stateLayout.setTipImg(StateLayout.TIMEOUT, R.mipmap.ic_launcher); break; case R.id.btn_time_out: stateLayout.showTimeoutView(); // stateLayout.setTipText(StateLayout.NOT_NETWORK, "12345"); // stateLayout.setTipImg(StateLayout.NOT_NETWORK, R.mipmap.ic_launcher); break; case R.id.btn_not_network: stateLayout.showNoNetworkView(); break; case R.id.btn_login: stateLayout.showLoginView(); break; } } }
如何添加
Gradle
1.在Project的build.gradle 中添加仓库地址
// JitPack仓库地址 maven { url "https://jitpack.io" }
示例:
allprojects { repositories { jcenter() // JitPack仓库地址 maven { url "https://jitpack.io" } } }
2.在Module目录下的build.gradle中添加依赖
//添加依赖 compile 'com.github.sushanqiang:StatelayoutLibrary:v1.0.0'
示例:
在主项目module的 build.gradle中添加: dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:25.1.0' //添加依赖 compile 'com.github.sushanqiang:StatelayoutLibrary:v1.0.0' }
Github 地址及demo:
https://github.com/sushanqiang/StatelayoutLibrary相关文章推荐
- 【Android开发日记】Fragment切换如何保存状态?Viewpager简单搞定
- 封装一个Recyclerview(包含刷新,加载和状态切换)
- 动手写一个Android数据加载时界面状态切换的开源库
- 【从头学android】使用setContentView(View)替换setContentView(int),这样切换布局就可以保留切换前的状态啦
- Android 一个按钮两次单击触发两个不同事件并实现两个View在同一界面切换
- Android 使用setContentView在一个Activity进行界面切换
- android中,如果使用imageButton可以在drawable 中设置一个selector,但是imageView设置不起作用
- Android setContentView 实现同一个activity下不同view的切换
- Android开发:setContentView切换界面,自定义带CheckBox的ListView显示SQlite条目-----实现
- 发现了Eclipse调试Android的时候的一个小技巧哦!DDMS快速进入断点状态
- 使用UIScrollView和UIPageControl做一个可以用手势来切换图片的效果
- Android使用Fragment来实现ViewPager的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信
- Android 解决SurfaceView切换导致界面闪烁,短暂黑屏问题。
- Android应用开发(2):制作一个漂亮的引导界面--viewpager的使用
- android-使用ViewGroup实现左右滑动切换界面的效果
- Android中同一个ImageView中根据状态显示不同图片
- Android 两个界面间快速切换时,会发现有短暂黑屏
- android 封装一个view模块
- Android setContentView 实现同一个activity下不同view的切换
- Android setContentView 实现同一个activity下不同view的切换