您的位置:首页 > 移动开发 > Android开发

Android shape drawable 讲解

2016-12-04 17:18 459 查看
最近一直很努力的在看Android文档 ,也希望早点把它结束掉。

在这里做个记录,写出我对shape drawable的理解和用法

开始

1、新建shape文件

首先在res/drawable文件夹下,新建一个文件,命名为:xxx.xml

内容如下:

<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="你想定义的图形,不写就是默认矩形"
>
</shape>


图形有四种选择(选择你要定义的即可):

矩形:”rectangle” 椭圆或者圆: “oval” 直线: “line” 环形:”ring”

shape节点下可以添加如下小节点(并不是要全部写上):

角度:corners 只适用于当前图形是矩形 用来画圆角矩形 当然你强制用在别的图形上我也没办法。

渐变:gradient

内边距:padding

填充:solid

大小:size

边框:stroke

上面的几个子节点具体决定着你的图形长成啥样。

下面所说的

Dimension是安卓中可用的单位sp dp pt mm px in 主要用dp

color可用 RGB ARGB RRGGBB AARRGGBB的颜色值 也可以引用资源文件中的颜色

<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape=["rectangle" | "oval" | "line" | "ring"] >
<corners
<!-- 四个角的的角度 -->
android:radius="Dimension"
<!-- 左上角的角度 -->
android:topLeftRadius="Dimension"
<!-- 右上角的角度-->
android:topRightRadius="Dimension"
<!--左下角的角度-->
android:bottomLeftRadius="Dimension"
<!--右下角的角度-->
android:bottomRightRadius="Dimension" />

<gradient
<!--渐变方向的角度 0 表示从左到右, 90 表示 从下
到上. 值必须是45的倍数,默认是鸡蛋-->
android:angle="integer"
<!--渐变的中心位置的X轴 float值(0 -1.0)-->
android:centerX="integer"
<!--渐变的中心位置的Y轴 float值(0 -1.0)-->
android:centerY="integer"
<!--渐变中心的颜色值-->
android:centerColor="integer"
<!--渐变结尾的颜色值-->
android:endColor="color"
<!--渐变开始的颜色值-->
android:startColor="color"
<!--type有三种选择。linear是默认的线性渐变
radial是放射状的渐变中心位置的颜色会取
startcolor。 sweep应该是角度渐变是一种
扫描形的渐变最后放个图看看-->

android:type=["linear" | "radial" | "sweep"]
<!--float值,这个属性只适用于type为radial的时候-->
android:gradientRadius="Float"
<!--配合量 一般是false。true只用在
使用LevelListDrawable的时候.-->
android:useLevel=["true" | "false"] />

<padding
<!--距离上下左右的内边距,具体应该是图形里面的内容
距离图形的padding-->
android:left="Dimension"
android:top="Dimension"
android:right="Dimension"
android:bottom="Dimension" />

<size
<!--图形的宽高-->
android:width="integer"
android:height="integer" />

<solid
<!--图形的的填充颜色-->
android:color="Color"

<stroke
<!--边距的宽度,要给图形设置边框的话,你就必须加宽度-->
android:width="Dimension"
<!--边距的颜色-->
android:color="color"
<!--下面两个属性是用来画虚线边框的必须两个
一起用才有效-->
<!--虚线的长度-->
android:dashWidth="Dimension"
<!--虚线之间的宽度-->
android:dashGap="Dimension" />
</shape>


这里补充一些有关ring的特别属性

下面的属性用于 android:shape=”ring”的时候,这些属性和shape同一级别 直接写在它下面:

1.android:useLevel=“false”| “true”

useLevel=”true”只是用于 LevelListDrawable一般写false否则有可能你的圆环显示不出来

2.android:innerRadius=”Dimension” 圆环的内半径

3.android:innerRadiusRatio=”Float” 内环的比例,比如这个值为2,那么内环的半径就为外环半径除以2,默认值是9。注意:这个属性会被

innerRadius这个属性覆盖。

4.android:thickness=“Dimension”圆环的厚度

5.android:thicknessRatio=”Float” 环的厚度比例,比如这个值为2,那么环的厚度就为环半径除以2,同样的,如果设置了thickness,则这个属性不起作用。

最后:

其实只要把属性理解了用shape drawable做一些简单的图形根本没问题

现在还在写一些简单的文章。没有多大的技术性,希望自己早日能成为写牛逼文章的人。哈哈.

这就是sweep渐变。要说示例的话肯定好多,所以这里没放。只要把这些东西理解了,你就可以画出你想要的图形 。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android shape