Shape 是安卓 xml 资源文件里的一种常用标签,其文件通常存放于 drawable 下。通常用来绘制一些简单的背景图片:线,矩形,圆,圆环。还带有描边,圆角,颜色渐变的功能。
一个简单的带圆角的 Shape 如下:
<TextView android:layout_width="200dp" android:layout_height="50dp" android:layout_margin="10dp" android:background="@drawable/shape_rectangle" android:layout_gravity="center_horizontal" android:gravity="center" android:text="矩形" />
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <!-- 填充的颜色--> <solid android:color="#f2eeee" /> <!-- 设置按钮的四个角为弧形 --> <!-- android:radius 弧形的半径 --> <corners android:radius="2dp" /> <!-- 描边--> <stroke android:width="1dp" android:color="#df1f1f" /> </shape>
一个简单的例子如上,现在我们看一下 shape 标签里的一些常用的重要的属性
android:shape
有四个值,用来指定绘制的形状。
line:线
rectangle:矩形
oval:圆形
ring:圆环
除圆环外有这一个标签就够了,但如果是圆环,则还有一些其他的属性需要设置。
android:innerRadius :内环的半径
android:thickness : 环的厚度
android:innerRadiusRatio : 浮点型,以环的宽度比率来表示内环的半径,宽度/半径
android:thicknessRatio : 浮点型,以环的宽度比率来表示环的厚度,厚度/半径
上述标签,
android:innerRadius 、 android:thickness
这一组好理解,直接通过数值来指定圆环的半径及厚度。
android:innerRadiusRatio 、android:thicknessRatio
这一组则是比例值来设置圆环的半径及厚度。
例如 android:innerRadiusRatio=“1” 那么 表示 宽度/半径=1 即半径等于宽度。
补充,
android:useLevel
如果为true,则可在LevelListDrawable中使用。有一次在使用时未设置这个值为true,圆环没有正常显示,虽然不清楚具体含义,但也明白了,需要设置这个值。
这里是属性,我们再看一下会用到的标签:
solid 标签(填充色)
一个属性值,指定填充的颜色。
<!-- 填充的颜色--> <solid android:color="@color/colorAccent" />
corners 标签(圆角)
用于设置矩形四个角的弧度
<!-- 设置按钮的四个角为弧形 --> <!-- android:radius 弧形的半径 --> <corners android:radius="2dp" />
stroke 标签(描边)
width 指定图像描边宽度
color 指定描边颜色
<!-- 描边--> <stroke android:width="1dp" android:color="#df1f1f" />
size 标签 (宽高)
优先级低于控件设置的宽高,当外部控件设置宽高为 wrap_content 时生效。
<size android:width="50dp" android:height="50dp" />
padding 标签(内边距)
优先级低于控件设置的内边距,效果与控件中设置内边距一致
<!--内边距--> <padding android:left="4dp" android:bottom="4dp" android:right="4dp" android:top="4dp" />
gradient 标签(颜色渐变)
定义了图形的渐变色,下面介绍几个属性标签 :
1、android:type : 渐变类型,值有三个,默认值是linear。
linear —— 线性渐变;
radial —— 放射性渐变;
sweep —— 扫描式渐变。
2、android:angle : 渐变的角度,值必须是45的倍数。
3、android:gradientRadius : 渐变的半径,只有当渐变类型为radial时才能使用。
4、android:centerX 和 android:centerY : 渐变中心X和渐变中心Y的相对位置,值为0~1。
5、android:startColor、android:centerColor 和 android:endColor : 定义渐变颜色。
一些效果图如下:
参考文章:Android开发——使用xml文件定义一个 drawable.
Demo查看:gitHup.
版权声明
1.本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行测试。
2.本站资源仅供学习和交流使用,版权归资源原作者所有,请在下载后24小时之内自觉删除。
3.若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,与本站无关。
4.若内容涉及侵权或违法信息,请联系本站管理员进行下架处理,邮箱ganice520@163.com(本站不支持其他投诉反馈渠道,谢谢合作)
发表评论