Android中shape属性详解:(设置圆角、设置渐变)
一、使用:
1、新建shape文件
首先在res/drawable文件夹下,新建一个文件,命名为:shape_radius.xml:
内容:
先简单介绍下shape是如何使用的,下面会有各个属性的详细解释
<?xml version="1.0" encoding="utf-8"?>xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
android:layout_height="24dp"
android:layout_width="50dp">
<corners android:radius="10dp" />
<solid android:color="#ffffff" />
<stroke
android:width="1dip"
android:color="@color/line_gray" />
</shape>
2、添加到控件中
在定义好shape文件后,下一步就是将其添加到控件中或者添加到布局中,添加时,一般是使用设置background属性,将其为控件背景。
android:background="@drawable/window_dialog_border"
二、基本属性
corners:定义圆角
gradient:定义渐变色
padding:内边距(控件本身也可以实现)
size:大小(控件本身也可以实现)
solid:指定内部填充色
stroke:描边属性,可以定义描边的宽度,颜色,虚实线
详解:
Corners:
注:dimension:dp值
Corners标签里的子标签及其所具有的属性:
<corners //定义圆角
android:radius="dimension" //全部的圆角半径
android:topLeftRadius="dimension" //左上角的圆角半径
android:topRightRadius="dimension" //右上角的圆角半径
android:bottomLeftRadius="dimension" //左下角的圆角半径
android:bottomRightRadius="dimension" /> //右下角的圆角半径
Corners标签是用来字义圆角的,其中radius与其它四个并不能共同使用
例如,该布局定义四个圆角半径为20,背景颜色为#ffffffff
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<corners android:radius="20dip"/>
<solid android:color="#ffffffff"/>
</shape>
使用:
<TextView
android:id="@+id/tv_save_rlectronicreceipt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/window_dialog_border"
/>
就能设置TextView四个角设置为半径20dp圆角,控件内部填充色为黑色。
2、solid
solid用以指定内部填充色
只有一个属性:
使用:设置为全黑的背景
<solid android:color="#ffffffff" />
3、gradient
gradient用以定义渐变色,可以定义两色渐变和三色渐变,及渐变样式,它的属性有下面几个:
<gradient
android:type=["linear" | "radial" | "sweep"] //共有3中渐变类型,线性渐变(默认)/放射渐变/扫描式渐变
仅对线性渐变有效
android:angle="integer" //渐变角度,必须为45的倍数,0为从左到右,90为从上到下,-90位从下到上,
仅当渐变类型为放射渐变时有效
android:centerX="float" //渐变中心X的相当位置,范围为0~1
android:centerY="float" //渐变中心Y的相当位置,范围为0~1
android:startColor="color" //渐变开始点的颜色
android:centerColor="color" //渐变中间点的颜色,在开始与结束点之间
android:endColor="color" //渐变结束点的颜色
只有当渐变类型为radial时才能使用
android:gradientRadius="float" //渐变的半径,
useLevel属性通常不使用。该属性用于指定是否将该shape当成一个LevelListDrawable来使用,默认值为false
android:useLevel=["true" | "false"] /> //使用LevelListDrawable时就要设置为true。设为false时才有渐变效果
4、stroke
这是描边属性,可以定义描边的宽度,颜色,虚实线等
使用
<stroke
android:width="dimension" //描边的宽度
android:color="color" //描边的颜色
// 以下两个属性设置虚线
android:dashWidth="dimension" //虚线的宽度,值为0时是实线
android:dashGap="dimension" /> //虚线的间隔
5、size和padding
这两个基本上不怎么用,因为他们所具有的功能,控件本身也能实现。 size:是用来定义图形的大小的。
<size
android:width="dimension"
android:height="dimension" />
padding:用来定义内部边距:
<padding
android:left="dimension"
android:top="dimension"
android:right="dimension"
android:bottom="dimension" />
三、Shape的属性
Shape文件本身也具有一些属性
shape的形状,默认为矩形,可以设置为矩形(rectangle)、椭圆形(oval)、线性形状(line)、环形(ring)
android:shape=["rectangle" | "oval" | "line" | "ring"]
下面的属性只有在android:shape="ring时可用:
android:innerRadius 尺寸,内环的半径。
android:innerRadiusRatio 浮点型,以环的宽度比率来表示内环的半径,
android:thickness 尺寸,环的厚度
android:thicknessRatio 浮点型,以环的宽度比率来表示环的厚度,例如,如果android:thicknessRatio="2",
android:useLevel boolean值,如果当做是LevelListDrawable使用时值为true,否则为false.
可见,只有第一个shape是可用的,其它五个都是shape等于ring时所特有的。
注:
1、当不指定shape形状时,默认是矩形
2、当shape形状指定为环形(ring)时,一定要设置 android:useLevel = false 不然没有效果