shape在android开发中不是特别重要,不使用shape同样可以做出使用shape的效果。但使用shape具有许多优势。1.app瘦身,shape定义的资源要比远远小于UI设计的图片资源,虽然现在在手机上不缺少存储空间,但可以做出小而且界面丰富的应用,这对于节省用户的流量,增强网上流通,减少用户下载软件的心理压力也许有用。2.加快软件开发速度,减少团队沟通的效率损耗。这使得软件开发人员可以从自己的角度更自由更快速的调整软件的界面,修改几个字符花费的时间远小于做一幅图片并替换的时间,而且要恰当的为UI描述清楚一些极微小的颜色改变对软件的影响相当的困难。在屏幕尺寸和分辨率多变的情况下,shape的优势相当明显。3.由于android的开源特性,图片的资源的创意很容易被别人获取和模仿。有很多应用在使用shape,在扁平化的UI世界里,也许shape的优势会更加的明显,对于一些界面友好无法成功反编译程序来说,分析他的图片来了解相关技术细节有时是可行的,但如果使用shape,将有可能使用研究者十分沮丧,他连一张可利用的资源图片都看不到。
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape=["rectangle" | "oval" | "line" | "ring"] > --- 默认为rectangle
<corners -- shape=“rectangle”时使用,
android:radius="integer" -- 半径,会被下边的属性覆盖,默认为1dp,
android:topLeftRadius="integer"
android:topRightRadius="integer"
android:bottomLeftRadius="integer"
android:bottomRightRadius="integer" />
<gradient -- 渐变
android:angle="integer"
android:centerX="integer"
android:centerY="integer"
android:centerColor="integer"
android:endColor="color"
android:gradientRadius="integer"
android:startColor="color"
android:type=["linear" | "radial" | "sweep"]
android:useLevel=["true" | "false"] />
<padding
android:left="integer"
android:top="integer"
android:right="integer"
android:bottom="integer" />
<size -- 指定大小,一般用在imageview配合scaleType属性使用。大小一般会适配滴
android:width="integer"
android:height="integer" />
<solid -- 填充颜色,可是是十六进制颜色。(比如想设置半透明效果,直接使用十六就只就OK)
android:color="color" />
<stroke -- 指定边框,border,dashWidth和dashGap有一个为0dp则为
android:width="integer"
android:color="color"
android:dashWidth="integer" -- 虚线宽度
android:dashGap="integer" /> -- 虚线间隔宽度
</shape>
大小
gradientsolid:实心,就是填充的意思,实心图形闭合区域内部的颜色
变化
padding 填充色与边界的距离
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 填充 -->
<solid
android:color="#B2B2B2"
/>
<!-- 大小 -->
<size
android:width="200dp"
android:height="50dp"
/>
<!-- 渐变色 -->
<gradient
android:startColor="#DBDCDD"
android:endColor="#B8B9BB"
android:centerColor="#ADADAF"
android:angle="270"
/>
<!-- 描边 -->
<stroke
android:width="2dp"
android:color="#3D4148"
/>
<!-- 圆角 -->
<corners
android:radius="5dp"
/>
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp"
/>
</shape>
<!--
1、 solid
描述:内部填充
属性 android:color 填充颜色
2、size
描述:size: 大小
属性:
android:width 表示形状的宽度
android:height 表示形状的高度
3、gradient
描述: 渐变色
属性:
android:startColor 起始颜色
android:endColor 结束颜色
android:angle 渐变角度(PS:当angle=0时,渐变色是从左向右。 然后逆时针方向转,当angle=90时为从下往上。angle必须为45的整数倍)
android:type 渐变类型(取值:linear、radial、sweep)
linear 线性渐变,这是默认设置
radial 放射性渐变,以开始色为中心。
sweep 扫描线式的渐变。
android:centerColor 渐变中间颜色,即开始颜色与结束颜色之间的颜色
android:useLevel 如果要使用LevelListDrawable对象,就要设置为true。设置为true无渐变。false有渐变色
android:gradientRadius 渐变色半径.当 android:type="radial" 时才使用。单独使用 android:type="radial"会报错。
android:centerX 渐变中心X点坐标的相对位置
android:centerY 渐变中心Y点坐标的相对位置
4、stroke
描述: stroke:描边 相当于html中的盒子模型的border
属性:
android:width 描边的宽度
android:color 描边的颜色
android:dashWidth 表示描边的样式是虚线的宽度,
值为0时,表示为实线。值大于0则为虚线。
android:dashGap 表示描边为虚线时,虚线之间的间隔 即“ - - - - ”
5、corners
描述: corners: 圆角
属性:
android:radius 半径
android:topLeftRadius 左上角半径
android:topRightRadius 右上角半径
注意一下两个属性比较不同:
android:bottomLeftRadius 右下角半径
android:bottomRightRadius 左下角半径
6、padding
描述:内部边距,即内容与边的距离
属性:
android:left 左内边距
android:top 上内边距
android:right 右内边距
android:bottom 下内边距
-->
http://tech.ddvip.com/2012-10/1351226528184208.html