年后的第一周马上要结束了,小伙伴们是不是还处于每天都睡不够、睡不醒的状态。过年的时候,也没有好好写文章,趁着这段时间项目还不是很忙,赶紧补补。
简介
我们的项目里都会遇到几种页面,分别为加载中、无网络、无数据、出错四种情况,这四种情况是我们在项目中不可避免要出现的。有一个挺牛逼的哥们把这几种情况封装成库了,方便大家使用,不过现在这个库已经停止维护了。
原理比较简单,继承FrameLayout,在xml渲染完成后,加上加载中、无网络、无数据、出错四个页面,根据需要控制显示哪一层,花了些时间,开了很多方法出来,支持很多属性的设置,算是比较实用,源码里已对各个方法的作用都加了注释。
Github地址:https://github.com/weavey/LoadingLayoutDemo
简单使用
1.gradle引用:
implementation 'com.lai.weavey:loadinglayout:1.3.1'
2.使用说明
LoadingLayout支持全局配置,对所有使用到的地方都起效,需要在Application中配置,如下:
public class LoadingApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
LoadingLayout.getConfig()
//.setLoadingPageLayout(R.layout.loading)
//下面的设置项,组件都提供了默认值,不想更改的可以省略
.setErrorText("出错啦~请稍后重试!")
.setEmptyText("抱歉,暂无数据")
.setNoNetworkText("无网络连接,请检查您的网络···")
.setErrorImage(R.drawable.define_error)
.setEmptyImage(R.drawable.define_empty)
.setNoNetworkImage(R.drawable.ic_network_check)
.setAllTipTextColor(R.color.colorGray)
.setAllTipTextSize(18)
.setReloadButtonText("点我重试哦")
.setReloadButtonTextSize(18)
.setReloadButtonTextColor(R.color.colorGray)
.setReloadButtonWidthAndHeight(150,40);
}
}
由于“加载中”的页面,可能每个App都不一样,因此,LoadingLayout支持自定义LoadingPage,如下:
LoadingLayout.getConfig().setLoadingPageLayout(R.layout.define_loading_page);
同时,为了适应个别界面的“特殊需求”,LoadingLayout也支持局部设置各种属性,仅对当前对象生效,不影响全局。如下:
LoadingLayout loading = (LoadingLayout) findViewById(R.id.loading_layout);
loading.setLoadingPage(R.layout.define_loading_page)
.setEmptyText("暂无报告数据")
.setErrorText("")
.setNoNetworkText("")
.setErrorImage(R.drawable.define_error)
.setErrorTextSize(16)
.setReloadButtonText("点我重新加载哦"); //等等
给ReloadButton设置监听:
loadingLayout.setOnReloadListener(new LoadingLayout.OnReloadListener() {
@Override
public void onReload(View v) {
Toast.makeText(MainActivity.this,"重新载入",Toast.LENGTH_SHORT).show();
}
});
3.设置显示的页面
//载入成功
loadingLayout.setStatus(LoadingLayout.Success);
//加载失败
loadingLayout.setStatus(LoadingLayout.Error);
//正在加载
loadingLayout.setStatus(LoadingLayout.Loading);
//没有数据
loadingLayout.setStatus(LoadingLayout.Empty);
//没有网络
loadingLayout.setStatus(LoadingLayout.No_Network);
4.布局展示
<com.weavey.loading.lib.LoadingLayout
android:id="@+id/loading_layout"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
app:isFirstVisible="true">
<TextView
android:background="@color/colorPrimary"
android:visibility="visible"
android:gravity="center"
android:textColor="@android:color/white"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="载入成功时界面的内容"/>
</com.weavey.loading.lib.LoadingLayout>
总结
Loadinglayout这个库对于加载数据情况显示还是可以,而且方便快捷,不需要很多代码就可以实现。