每个App都会用到的LoadingLayout

每个App都会用到的LoadingLayout_第1张图片
图片.png

前言
项目里都会遇到几种页面,分别为加载中、无网络、无数据、出错四种情况,经常要使用,所以封成库引用了,方便使用,顺便分享出来。先看一下效果:

每个App都会用到的LoadingLayout_第2张图片
图片.png
每个App都会用到的LoadingLayout_第3张图片
图片.png
每个App都会用到的LoadingLayout_第4张图片
图片.png

![Uploading 图片_964712.png . . .]

原理比较简单,继承FrameLayout,在xml渲染完成后,加上加载中、无网络、无数据、出错四个页面,根据需要控制显示哪一层,花了些时间,开了很多方法出来,支持很多属性的设置,算是比较实用,源码里已对各个方法的作用都加了注释,就不做过多解释了,项目GitHub地址:https://github.com/weavey/LoadingLayoutDemo,感兴趣的可以看看,欢迎指出问题。

使用方式
gradle引用:

图片.png

使用说明

图片.png
每个App都会用到的LoadingLayout_第5张图片
图片.png

由于“加载中”的页面,可能每个App都不一样,因此,LoadingLayout支持自定义LoadingPage,如下:

图片.png

同时,为了适应个别界面的“特殊需求”,LoadingLayout也支持局部设置各种属性,仅对当前对象生效,不影响全局。如下:

每个App都会用到的LoadingLayout_第6张图片
图片.png

为ReloadButton设置监听:

每个App都会用到的LoadingLayout_第7张图片
图片.png

设置显示的页面:


每个App都会用到的LoadingLayout_第8张图片
图片.png

最后,在xml里面使用:

每个App都会用到的LoadingLayout_第9张图片
图片.png

注意:
(1)isFirstVisible属性用来控制contentView一开始是否隐藏,由于LoadingLayout原理是在xml渲染完成后在contentView上铺上三层View,因此,一开始如果不隐藏,等contentView渲染完成后调用: loadingLayout.setStatus(LoadingLayout.Loading);
会造成界面闪烁的效果,影响体验,因此默认将contentView隐藏,所以数据加载完成后一定要调用loadingLayout.setStatus(LoadingLayout.Success);,将contentView显示出来。这样也能解决未获取到数据的情况下,被用户看到杂乱无章的布局,个人还是比较喜欢默认隐藏contentView;
(2)为了方便管理,LoadingLayout只能有一个直属子View,类似ScrollView,添加两个直属子View会抛出异常throw new IllegalStateException("LoadingLayout can host only one direct child");;
(3)由于AS会直接将自定义View的特性反应在预览界面,所以在使用LoadingLayout的时候,会无法看到被LoadingLayout包裹住的布局(默认为gone),因此也可以将isFirstVisible属性暂时设为true,预览布局。

你可能感兴趣的:(每个App都会用到的LoadingLayout)