Android-全局转圈轻量级控件StateView(小萌新一直
项目也是一直在用这个全局的,比较轻量,对于我来说,简洁实用就好。 附上地址:nukc/StateView 。大家肯定有别的,甚至好多人都是自己写就好了,小萌新懂的,小萌新这里简单记录下导入模块的一些问题处理,以及尝试去做一些修改,同时也能看看别人开源项目的源码,好好向别人学习啥的!
之前用的时候直接自动导入的:
image使用简单(一般注册到布局的根View就可以了。根View没有名字的可以自定义一个id获取就行 。 小萌新基本都是需要在哪个view上就注册给哪个就行):
image它有个缺点就是,如果当前没有数据,我设置了mStateView.showEmpty(), 空视图的情况下,这种情况不能点击重试 - 因为后台有可能立即添加了一条,但是用户还保持当然空数据视图页面,所以我需要这种情况也触发点击刷新,因此需要在模块上也增加点击重试(直接导入模块,加入和showRetry相同的处理即可)。
(小萌新没有导入module之前,也可以加,不过都是找到控件再添加的,那样不好,和StateView模块分离了,没有整体性)
压缩包下载下(如果不知道导入哪个模块,很简单,看下工程模块下的settings.gradle):
image所以下载文件夹后导入如下两个模块即可:
image1. 导入模块后,app依赖这两个模块
image2. 然后删除library下的build.gradle中的最后一句(因为我不做git发布,所以不需要,否则你还要依赖这个配置)
image3. 然后animations模块下的bintray.gradle自然也就把它删除了....
image image3. 然后找到library模块下的showRetry方法下的关于重试点击事件的处理部分
image4. 然后将其处理完全可以复制一份到空数据视图的情况
public View showEmpty() {
if (mEmptyView == null) {
mEmptyView = inflate(mEmptyResource, EMPTY);
mEmptyView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (mRetryClickListener != null) {
showLoading();
mEmptyView.postDelayed(new Runnable() {
@Override
public void run() {
mRetryClickListener.onRetryClick();
}
}, 400);
}
}
});
}
showView(mEmptyView);
return mEmptyView;
}
基本上OK了! 这样我们如果判断首次请求列表数据为空的情况就可以设置showEmpty,然后点击事件就可以和重试一下,走下刷新逻辑:
image逻辑的地方设置一下空视图就好
image到此基本上就可以。小萌新们开始自己的新项目前,可以把基础的结构搭起来,像依赖注入,eventbus呀这些,像Glide、Rx家族,像下拉刷新,上拉加载这些也可以添加上。然后把基本的结构,底部菜单都弄好,把自己封装的通用网络,通用适配器都可以整上,做项目也要实践提升自己方可成就更多。 还可以把公司可能用的分享、推送配置上。 基本逻辑都完事,到时候做项目之间就来,过程中还可以完善相关配置。
好了,先到这里吧。。。。记录下就好。加油,么么哒!