首先来看下今日头条效果图:
再来看下我们实现的效果:
实现思路,为了复用以及封装性,所以决定使用自定义ViewGroup来实现,下面来看实现代码:
这里是初始化布局,以及监听事件的方法:
根据instanceOf方法来判别当前 找到控件是哪个,然后进行layout,这里有个坑,如果使用强转之后的View(例如:Button)来进行layout设置,是不起作用的,必须使用直接找到的ChildView来进行安放位置。
好了,其实这里开始还考虑到使用代码动态创建View然后layout上去,后来发现,这样的话需要定义许多的自定义属性,索性就不用代码动态添加了,哈哈,偷懒了!
有两种状态,一种是关注成功,一种是关注失败,这两个设定都是通过暴露方法之后在MainActivity中进行实现的。
下面来看代码:
这里有个问题,就是之前在写代码的时候,progressBar的setVisivility(View.GONE)没有任何效果,之后,我才发现烦了低级错误。。。
应该在UI线程刷新控件:
完整布局如下:
完整的代码如下:
MainActivity中的设定代码如下:
这里有个小小的问题,在我的安卓4.4手机上可以正常运行,但是在安卓7.0的手机上运行,展示不出来进度条,第一次写自定义控件的开源项目,希望大家多多包涵啊!
终于解决了,参考了点击打开链接文章,在布局文件里面,给Button套了一层布局:
代码里面获取的时候也有点问题,修改如下:
好开心啊!
源码地址:
MyStateButton