Drawable资源之shape drawable

来源:互联网 发布:sql 查询前10条数据 编辑:程序博客网 时间:2024/04/29 08:53

用来在XML中定义shape。

文件位置:

res/drawable/filename.xml

这个文件名作为资源ID使用。

编译后的资源类型:

   资源指向GradientDrawable。

资源引用方式:

   在Java中,R.drawable.filename

   在XML中,@[package:]drawable/filename

语法:

<?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="integer"       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        android:width="integer"        android:height="integer"/>   <solid        android:color="color" />   <stroke        android:width="integer"        android:color="color"        android:dashWidth="integer"        android:dashGap="integer"/></shape>

元素:

   <shape>

        这个shape drawable。必须作为根元素。

        属性:

        xmlns:android

        字符串。必须指定。定义这个XML的namespace,必须是

        “http://schemas.android.com/apk/res/android”

        android:shape

        关键字。定义了shape的类型。可用的值如下:

Value

Description

“rectangle”

将矩形填充到这个容器视图,默认值

“oval”

将椭圆填充到这个容器中。

“line”

铺满这个容器视图的一条横线。这个外观需要<stroke>元素来定义线的宽度。

“ring”

环形。

        只有当android:shape=”ring”时,下面属性才会被使用:

        android:innerRadius

        Dimension。内部环(中心点)的半径,dimension值或dimensionresource。

        android:innerRadiusRatio

        Float。内部环的半径,占环宽度的比例。例如,如果android:innerRadiusRatio=”5”,那么内部半径就等于环的宽度除以5。这个值由android:innerRadius重写,默认值是9。

        android:thickness

        Dimension。环的厚度,dimension值或dimensionresource。

        android:thicknessRatio

        Float。环的厚度,占环宽度的笔录。例如,如果android:thicknessRatio=”2”,那么这个厚度就等于环宽度除以2。值被android:innerRadius重写,默认为3。

        android:useLevel

        布尔值。如果这用作LevelListDrawable则为true。一般情况这项应该为”false”,否则你要的形状可能不会出现。

   <corners>

        为这个shape创建圆角。只有当形状为矩形时才能使用。

        属性:

        android:radius

        Dimension。所有角的半径,类型为dimension值或dimension resource。对于每个角可以通过下面的属性进行重写。

        android:topLeftRadius

        Dimension。左上角的半径,类型为dimension值或dimensionresource。

        android:topRightRadius

Dimension。右上角的半径,类型为dimension值或dimensionresource。

        android:bottomLeftRadius

Dimension。左下角的半径,类型为dimension值或dimensionresource。

        android:bottomRightRadius

Dimension。右下角的半径,类型为dimension值或dimensionresource。

注意:每个角(最初)必须提供大于1的半径,否则不会出现圆角。如果你不想将角指定为圆角,应急预案是用android:radius将每个角的半径设为大于1,然后用你想要的真实值再重写每个角,并且在你不想要圆角时将它设为0(“0dp”)。

<gradient>

   对这个形状指定渐变色。

   属性:

   android:angle

   Integer。渐变的角度,以度为单位。0为从左到右,90为从下到上。它必须是45的倍数。默认是0。

   android:centerX

   Float。X方向中心点的位置(0~1.0)。

   android:centerY

   Float。Y方向中心点的位置(0~1.0)。

   android:centerColor

   Color。来自开始和结束颜色之间的可选颜色,16进制数或color resource。

   android:endColor

   Color。结束时的颜色,16进制数或colorresource。

   android:gradientRadius

   Float。渐变半径。只有当android:type="radial"时才使用。

   android:startColor

   Color。开始时的颜色,16进制数或colorresource。

   android:type

   关键字。应用的渐变模式的类型,可用的值有:

Value

Description

“linear”

线性渐变,默认值

“radial”

径向渐变。开始颜色为中心颜色。

“sweep”

扫线渐变。

   android:useLevel

   Boolean。如果这用作LevelListDrawable时此项为true。

<padding>

   填充应用的容器视图(这会填充视图的内容,而不是形状)。

   android:left

   Dimension。左边距。dimension值或dimensionresource。

   android:top

   Dimension。上边距。dimension值或dimensionresource。

   android:right

   Dimension。右边距。dimension值或dimensionresource。

   android:bottom

   Dimension。下边距。dimension值或dimensionresource。

<size>

   形状的尺寸。

   属性:

   android:height

   Dimension。形状的高度。dimension值或dimensionresource。

   android:width

Dimension。形状的宽度。dimension值或dimensionresource。

注意:默认情况下,这个shape会等比例计算容器视图的尺寸来适应设置的尺寸。当你在ImageView中使用shape时,你能通过设置android:scaleType=”center”来限制计算类型。

<solid>

   填充到shape的颜色。

   属性:

   android:color

   Color。应用到shape的颜色。十六进制或colorresource。

<stroke>

   这个shape的中线。

   属性:

   android:width

   Dimension。线条的厚度,dimension值或dimensionresource。

   android:color

   Color。线条的颜色,十六进制或colorresource。

   android:dashGap

   Dimension。线条破折号之间的距离,dimension值或dimensionresource。只有当android:dashWidth设置后才可用。

   android:dashWidth

   Dimension。每条破折线的尺寸,dimension值或dimensionresource。只有设置了android:dashGap后才可用。

例子:

保存在res/drawable/ gradient_box.xml中的XML:

<?xml version="1.0"encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"   android:shape="rectangle">   <gradient       android:startColor="#FFFF0000"        android:endColor="#80FF00FF"        android:angle="45"/>   <padding android:left="7dp"        android:top="7dp"        android:right="7dp"        android:bottom="7dp" />   <corners android:radius="8dp" /></shape>

在布局XML中将这个shape drawable应用到视图上:

<TextView   android:background="@drawable/gradient_box"   android:layout_height="wrap_content"   android:layout_width="wrap_content" />

下方是通过代码获取shape drawable并将它应用到视图上:

Resources res = getResources();Drawable shape = res.getDrawable(R.drawable.gradient_box); TextView tv =(TextView)findViewByID(R.id.textview);tv.setBackground(shape);

SEE ALSO:

   ShapeDrawable。