Drawable的分类

常用的Drawable有BitmapDrawable、ShapeDrawable等,现在一般加载图片都用第三方去处理,如Glide等,我们经常使用shape文件来作为View的背景来实现我们想要的效果,那么shape的语法究竟是什么样的呢?这里记录下:如下图

Shape里面的内容都在这里了,需要注意的是<shape>标签创建的Drawable,其实体类实际上是GradientDrawable。

android:shape

表示图形的形状,有四种,reatangle(矩形)、oval(椭圆|圆形)、line(线)、ring(圆环),默认是矩形,另外line和ring这两个选项必须要通过<stroke>标签来指定线的宽度和颜色等信息,否则无法达到预期的效果。

针对ring这个形状,有5个特殊的属性:android:innerRadius、android:thickness、android:innerRadiusRatio、android:thicknessRatio和android:useLevel,它们的含义如下表:

<corners>

表示shape的四个角的角度。只适用于矩形shape,这里的角度是指圆角的程度,用px来表示,有5个属性:

<gradient>

它与<solid>标签是互相排斥的,其中solid表示纯色填充,而gradient则便是渐变效果,它有如下几个属性:

android:angle---渐变的角度,默认是0,其值必须是45的倍数,0表示从左到右,90表示从上到下,具体的效果自行体验,这个属性是影响渐变的方向;

android:centerX----渐变的中心点的横坐标

android:centerY----渐变中心点的纵坐标,渐变的中心点会影响渐变的具体效果;

android:startColor---渐变的起始色;

android:centerColor--渐变的中间色;

android:endColor---渐变的结束色;

android:gradientRadius---渐变半径,仅当android:type=:“radial”时有效;

android:useLevel----一般为false,当Drawable作为StateListDrawable使用时为true;

android:type----渐变类型,有linear(线性渐变)、radial(径向渐变),sweep(扫描式渐变),默认是线性渐变,三者区别如下:

<solid>

这个标签表示纯色填充,通过android:color即可指定shape中填充的颜色

<stroke>

shape的描边,有如下几个属性:

android:width----描边的宽度,越大shape的边缘线看起来就越粗

android:color---描边的颜色

android:dashWidh-----组成虚线的线段的宽度

android:dashGap-----组成虚线的线段之间的间隔,间隔越大则虚线看起来空隙就越大

注意:dashwidth与dashGap任何一个为0,虚线效果不能生效

<padding>

这个表示空白,但是它表示的不是shape的空白,而是包含它的view的空白,有4个属性:android:left、android:right、android:top和android:bottom

<size>就不说了,一般我们会在xml中指定view的大小,shape的大小最后也是跟view的大小一致

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值