【Android Drawable系列】- Shape在代码中的使用GradientDrawable

作者 : 开心源码 本文共1207个字,预计阅读时间需要4分钟 发布时间: 2022-05-12 共210人阅读

Android Drawable系列

之前已经详细的说明过shape在xml中的属性和用法了,参考shape xml属性详解。shape是一个drawablexml文件,下意识的会认为shape在代码中所所对应的类是ShapeDrawable,实际上代码中是GradientDrawable,所以本文的主角就是GradientDrawable了。

GradientDrawable所有的set方法应该都在这里了,接下来说少量常用的方法,其余的如有需要可以自行查API。基本上每个set方法也有对应的get方法.

填充色

setColor就不说了,对应<solid android:color=""/>标签。

图形

图形对应的是shape标签中的android:shape=""属性,可以使用setShape()方法设置,所对应的参数如下:

//矩形,可以使用圆角public static final int RECTANGLE = 0;//椭圆,宽高相同也就是圆了public static final int OVAL = 1;//线public static final int LINE = 2;//环形public static final int RING = 3;

圆角

设置圆角的方法提供了两个setCornerRadius()setCornerRadii()

setCornerRadius(float Radius)方法设置一个float值就设置了所有圆角的半径

setCornerRadii(float[] radii)则需要传入一个长度为8的float[],源码中对方法的注释如下:

Specifies radii for each of the 4 corners. For each corner, the array contains 2 values, [X_radius, Y_radius]. The corners are ordered top-left, top-right, bottom-right, bottom-left.

这里和xml中使用略有不同,xml中提供了4个角的属性设置,但是此方法需要提供的值有8个,由于在计算半径时横向和纵向的半径时分开设置的,所以float[]的长度需要是8。

参数的注释中有说float[]length >= 8,也就是说参数数组至少要包括8个float,但是超出的8个的值并不会起作用。

描边

描边的api就相对简单了,setStroke()方法,重载了4个方法,具体如下:

设置的属性命名和xml<stroke>基本一致,没有什么好说的直接设置就好。

大小

setSize(int width, int height)方法设置对象的大小,最终还是view决定大小。

结语

渐变的在代码中的使用方式并没有研究的很明白,部分方法还设有API Level的限制也就没有进行继续研究了。

GradientDrawable的很多方法并没有经常使用就也没有进行研究了。如有不对,请大佬指正。

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 【Android Drawable系列】- Shape在代码中的使用GradientDrawable

发表回复