赞
踩
在原有的基础上,新增了java版本,目前支持kotlin和java两个版本,git地址:文章链接
又更新了,新增文字大小自适应方法,xml文件中可控
在Android开发中,使用Shape标签可以很方便的帮我们构建资源文件,跟传统的png图片相比:
关于shape标签如何使用,在网上一搜一大把,笔者这里就不赘述了,今天我们要讨论的shape标签泛滥成灾以后带来的后果。这里先给大家看一个维护刚刚有3年的项目的drawable目录。
请注意右侧标红的滚动条,有没有感觉很酸爽,在这个目录下的文件现在已经接近400个了,并且还在不停的增加。我们分析这个目录下的xml构成,发现主要由两种类型构成:selector和shape。selector这里略过不提,重点是shape,发现shape文件已经超过一半多,并且还会不停的增加,我们在带着好奇的心态,随便点开几个shape看一看
- <?xml version="1.0" encoding="utf-8"?>
- <shape xmlns:android="http://schemas.android.com/apk/res/android">
-
- <!-- solid的表示填充颜色 -->
- <solid android:color="#44ffffff"/>
-
- <stroke
- android:width="1px"
- android:color="#77ffffff"/>
-
- <!--为了展示半圆,就把角度设置的大点-->
- <corners android:radius="100dp"/>
-
- </shape>
-
- <?xml version="1.0" encoding="utf-8"?>
- <shape xmlns:android="http://schemas.android.com/apk/res/android">
- <solid android:color="#ffffff" />
- <corners android:radius="1dip" />
- <stroke
- android:width="0.5dip"
- android:color="#ea474f" />
- </shape>
-
-
- <?xml version="1.0" encoding="utf-8"?>
- <shape xmlns:android="http://schemas.android.com/apk/res/android">
- <stroke
- android:width="0.5dp"
- android:color="@color/color_de" />
- <solid android:color="@color/white" />
- <corners android:radius="5dp" />
- </shape>
真的是不看不知道,一看吓一跳。原来我们项目中大量存在的shape文件其实都是大同小异的。涉及到最常见的shape变化:圆角,描边,填充以及渐变。进一步分析,我们又发现:
等等一些情况,让我们陷入了shape文件的无限新增与维护中。我们不禁要思考,有没有办法可以把这些shape统一起来管理呢?xml书写出来的代码最终不都是会对应一个内存中的对象么?我们能不能从管理shape文件过渡到管理一个对象呢?
Talk is cheap 。 Show me the code
第一步,我们需要确定shape标签对应的泪到底是哪一个?第一反应就是ShapeDrawable,顾名思义嘛。然后残酷的事实告诉我们其实是GradientDrawable这兄弟。浏览Grad
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。