接上一原理篇:一种巧妙的drawable.xml替代方案
在上一篇文章中,我们详细了解到了一种利用DataBinding来替代drawable.xml的方案,但是并没有任何真正的演示代码和效果来呈现,本篇就是此目的。
本文将以上一篇方案所对应的库NoDrawable
来演示,具体的用法请点击链接 https://github.com/whataa/noDrawable 查看。以大部分App中都有的登录页为例,以下为设计图:
这是一张很常见(正常)的设计图,但是从实现角度来看,按照传统方式,我们至少得新建8个drawable.xml资源文件(没想到吧):
- 整体背景的渐变色;
- 输入框的普通状态背景和选中状态背景;
- 登录按钮的背景;
- “第三方登录”左右两边的“尾翼”资源,各一个(没办法,即使小,还是得做啊);
- 微信和QQ的按钮各一个(不同的按压效果);
可以看出来,仅一张设计图就新建了8个文件,那项目中的其它页面呢?即使按照规范将文件名起得整整齐齐的,保不齐下一次圆角大小变了、同样的圆角单背景色变了…枯燥无味吧。
现在我们直接用NoDrawable
来试试到底能不能达到一个drawable文件都不用创建的效果。
为节约篇幅,以下演示片段均展示与drawable相关的属性,其余省略
1. 整体背景的渐变色
1 | <android.support.constraint.ConstraintLayout |
2. 输入框状态
1 | <EditText |
3. 登录按钮的背景
1 | <Button |
4. “第三方登录”左右两边的“尾翼”
1 | <View |
5. 微信按钮按压效果
1 | <ImageView |
结合 NoDrawable 的属性文档,不知大家是否可以理解到位。根据上述代码片段,我们可以总结到该方案的两大特性:
- 高可读性
直接在布局中的View标签声明drawable属性,对View最终效果一目了然;
- 适配任意View
像使用View自身的属性一样,作用于任何View;
效果图就不贴了,和设计图一模一样。大家如果有具体需求,可直接到NoDrawable
仓库地址查看,其demo包含本文完整的代码及效果预览,最后,感谢阅读。