android资源文件
2011-02-18 17:13
218 查看
转自http://www.cnblogs.com/xirihanlin/archive/2010/06/14/1758145.html
Drawable
资源是对图像的一个抽象,你可以通过
getDrawable(int)
得到并绘制到屏幕上。这里有几种不同类型的
Drawable
:
Bitmap File
一个
Bitmap
图像文件(
.png
、
.jpg
或
.gif
)。
BitmapDrawable
。
Nine-Patch File
一个带有伸缩区域的
PNG
文件,可以基于
content
伸缩图片(
.9.png
)。
NinePatchDrawable
。
State List
一个
XML
文件,为不同的状态引用不同的
Bitmap
图像(例如,当按钮按下时使用不同的图片)。
StateListDrawable
。
Color
定义在
XML
中的资源,指定一个矩形(圆角可以有)的颜色。
PaintDrawable
。
Shape
一个
XML
文件,定义了一个几何形状,包括颜色和渐变。
ShapeDrawable
。
AnimationDrawable
资源的说明在【
Animation
资源】文章中。
Bitmap File
基本的
Bitmap
图像。
Android
支持几种不同格式的
Bitmap
文件:
.png
(最佳)、
.jpg
(可接受)、
.gif
(不要)。
注意:
Bitmap
文件可能会被
aapt
工具进行无损图像压缩优化。例如,一个真彩色的
PNG
(不超过
256
色)可能会被转换成一个带有颜色板的
8
位
PNG
。这样做能保证图片质量一样,但减少内存占用。因此,需要了解的是放在这个文件夹下的二进制图像在编译时可能会发生变更。如果你打算以位流方式读取图像来转化成
Bitmap
的话,可以把它们放到
res/raw
文件中,在这里,它们不会被优化。
File Location
:
res/drawable/filename.png (.png, .jpg,
或
.gif)
文件名会被当作资源
ID
使用。
Complied Resource Datatype
:
指向
BitmapDrawable
的资源指针。
Resource Reference
:
R.drawable.filename
(
Java
)
@[package:]drawable/filename
(
XML
)
Example
:
在
res/drawable/myimage.png
位置保存了一张图片,在
Layout XML
中可以应用这个图片到一个
View
上:
<ImageView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/myimage" />
下面的代码可以以
Drawable
方式得到图片:
Resources res = getResources();
Drawable drawable = res.getDrawable(R.drawable.myimage);
Nine-Patch File
NinePatch
是一种
PNG
图像,可以定义拉伸区域,当
View
的
content
超出图像边界的话,
Android
会拉伸它。典型用法是把这个图像设置为
View
的背景,而这个
View
至少有一个尺寸设置为“
wrap_content
”,当这个
View
变大来容纳
content
时,
Nine-Patch
图像也会拉伸来匹配
View
的大小。
File Location
:
res/drawable/filename.9.png
文件名将被当作资源
ID
使用。
Complied Resource Datatype
:
指向
NinePatchDrawable
的资源指针。
Resource Reference
:
R.drawable.filename
(
Java
)
@[package:]drawable/filename
(
XML
)
Example
:
在
res/drawable/myninepatch.9.png
位置保存了一张图片,在
Layout XML
中可以应用这个图片到一个
View
上:
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:background="@drawable/myninepatch" />
State List
StateListDrawable
是定义在
XML
中的
Drawable
对象,能根据状态来呈现不同的图像。例如,
Button
存在多种不同的状态(
pressed
、
focused
或
other
),使用
StateListDrawable
,你可以为
Button
的每个状态提供不同的按钮图像。
你可以在
XML
文件中描述状态列表。在
<selector>
元素里的每个
<item>
代表每个图像。每个
<item>
使用不同的特性来描述使用的时机。
当每次状态改变时,
StateList
都会从上到下遍历一次,第一个匹配当前状态的
item
将被使用——选择的过程不是基于“最佳匹配”,只是符合
state
的最低标准的第一个
item
。
File Location
Res/drawable/filename.xml
文件名将被当作资源
ID
使用。
Complied Resource Datatype
:
指向
StateListDrawable
的资源指针。
Resource Reference
:
R.drawable.filename
(
Java
)
@[package:]drawable/filename
(
XML
)
Syntax
:
<?
xml version
=
"1.0"
encoding
=
"utf-8"
?>
<
selector
xmlns:android
=
"http://schemas.android.com/apk/res/android"
android:constantSize
=
["true"
|
"false"
]
android:dither
=
["true"
|
"false"
]
android:variablePadding
=
["true"
|
"false"
]
>
<
item
android:drawable
=
"@[package:]drawable/drawable_resource
"
android:state_pressed
=
["true"
|
"false"
]
android:state_focused
=
["true"
|
"false"
]
android:state_selected
=
["true"
|
"false"
]
android:state_active
=
["true"
|
"false"
]
android:state_checkable
=
["true"
|
"false"
]
android:state_checked
=
["true"
|
"false"
]
android:state_enabled
=
["true"
|
"false"
]
android:state_window_focused
=
["true"
|
"false"
]
/>
</selector>
Elements
:
<selector>
必须。必须是根元素。可以包含一个或多个
<item>
元素。
Attributes
:
xmlns:android
String
。必须。定义
XML
的命名空间,必须是
“ http://schemas.android.com/apk/res/android
”。
android:constantSize
Boolean
。“
true
”表示随着状态变化,
Drawable
的大小保持不变(所有状态中最大的
size
);“
false
”表示大小会变化。默认是
false
。
android:dither
Boolean
。“
true
”表示当
Bitmap
和屏幕的不是相同的像素设定时支持
Bitmap
抖动(例如,
ARGB 8888
的
Bitmap
和
RGB 565
的屏幕);“
false
”表示不支持。默认是“
true
”。
android:variablePadding
Boolean
。“
true
”表示
Drawable
的
Padding
可以变化;“
false
”表示
Padding
保持相同(所有状态的最大
Padding
)。使能这一特征需要在状态变化时处理
Layout
,一般都不支持。默认值是
false
。
<item>
定义特定状态的
Drawable
,通过它的特性指定。必须是
<selector>
的子元素。
Attributes
:
android:drawable
Drawable
资源。必须。指向一个
Drawable
资源。
android:state_pressed
Boolean
。“
true
”表示按下状态使用(例如按钮按下);“
false
”表示非按下状态使用。
android:state_focused
Boolean
。“
true
”表示聚焦状态使用(例如使用滚动球
/D-pad
聚焦
Button
);“
false
”表示非聚焦状态使用。
android:state_selected
Boolean
。“
true
”表示选中状态使用(例如
Tab
打开);“
false
”表示非选中状态使用。
android:state_checkable
Boolean
。“
true
”表示可勾选状态时使用;“
false
”表示非可勾选状态使用。(只对能切换可勾选—非可勾选的构件有用。)
android:state_checked
Boolean
。“
true
”表示勾选状态使用;“
false
”表示非勾选状态使用。
android:state_enabled
Boolean
。“
true
”表示可用状态使用(能接收触摸
/
点击事件);“
false
”表示不可用状态使用。
android:window_focused
Boolean
。“
true
”表示应用程序窗口有焦点时使用(应用程序在前台);“
false
”表示无焦点时使用(例如
Notification
栏拉下或对话框显示)。
注意:
记住一点,
StateList
中第一个匹配当前状态的
item
会被使用。因此,如果第一个
item
没有任何状态特性的话,那么它将每次都被使用,这也是为什么默认的值必须总是在最后(如下面的例子所示)。
Example
:
XML
文件保存在
res/drawable/button.xml
。
<?
xml version
=
"1.0"
encoding
=
"utf-8"
?>
<selector
xmlns:android
=
"http://schemas.android.com/apk/res/android"
>
<item
android:state_pressed
=
"true"
android:drawable
=
"@drawable/button_pressed"
/>
<!-- pressed -->
<item
android:state_focused
=
"true"
android:drawable
=
"@drawable/button_focused"
/>
<!-- focused -->
<item
android:drawable
=
"@drawable/button_normal"
/>
<!-- default -->
</selector>
Layout XML
将这个
Drawable
应用到一个
View
上:
<ImageView
android:layout_height
=
"wrap_content"
android:layout_width
=
"wrap_content"
android:src
=
"@drawable/button"
/>
Color
定义在
XML
中的
color
,可以当作
Drawable
使用,来填充矩形区域(圆角可以有)。这种
Drawable
的行为很像是颜色填充。
注意:
Color Drawable
是一种简单的资源,可以使用
name
特性来引用其值(不再是
XML
文件的名)。因此,你可以在一个
XML
文件中的
<resources>
元素下添加多个
Color Drawable
。
File Location
:
res/drawable/filename.xml
文件名随意。元素的
name
将会当作资源
ID
使用。
Complied Resource Datatype
:
指向
PaintDrawable
资源的指针。
Resource Reference
:
R.drawable.color_name
(
Java
)
@[package:]drawable/color_name
(
XML
)
Syntax
:
<?
xml version
=
"1.0"
encoding
=
"utf-8"
?>
<
resources
>
<
drawable
name
=
"color_name
"
>
color
</drawable>
</resources>
Elements
:
<resources>
必须。必须是根节点。
没有特性。
<drawable>
一个
color Drawable
。其值可以是任何有效的十六进制颜色值或者
Color
资源。
Color
值总是以“
#
”开头,后面紧跟
Alpha-Red-Green-Blue
信息,格式是:
#RGB
、
#ARGB
或者
#AARRGGBB
。
Attributes
:
name
String
。必须。
Color
的名字。这个名字将被当作资源
ID
使用。
Example
:
XML
文件保存在
res/drawable/color.xml
。
<?
xml version
=
"1.0"
encoding
=
"utf-8"
?>
<resources>
<drawable
name
=
"solid_red"
>
#f00
</drawable>
<drawable
name
=
"solid_blue"
>
#0000ff
</drawable>
</resources>
Layout XML
将会把这个
Color Drawable
应用到一个
View
上:
<TextView
android:layout_width
=
"fill_parent"
android:layout_height
=
"wrap_content"
android:background
=
"@drawable/solid_blue"
/>
代码中获取
Color Drawable
并应用到
View
上:
Resources
res
=
getResources
()
;
Drawable
redDrawable
=
res
.
getDrawable
(
R
.
drawable
.
solid_red
);
TextView
tv
=
(
TextView
)
findViewByID
(
R
.
id
.
text
);
tv
.
setBackground
(
redDrawable
);
Shape
定义在
XML
中的几何形状。
File Location
:
res/drawable/filename.xml
文件名将被当作资源
ID
使用。
Complied Resource Datatype
:
指向
ShapeDrawable
的资源指针。
Resource Reference
:
R.drawable.filename
(
Java
)
@[package:]drawable/filename
(
XML
)
Syntax
:
<?
xml version
=
"1.0"
encoding
=
"utf-8"
?>
<
shape
xmlns:android
=
"http://schemas.android.com/apk/res/android"
android:shape
=
["rectangle"
|
"oval"
|
"line"
|
"ring"
]
>
<
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:usesLevel
=
["true"
|
"false"
]
/>
<
solid
android:color
=
"color
"
/>
<
stroke
android:width
=
"integer
"
android:color
=
"color
"
android:dashWidth
=
"integer
"
android:dashGap
=
"integer
"
/>
<
padding
android:left
=
"integer
"
android:top
=
"integer
"
android:right
=
"integer
"
android:bottom
=
"integer
"
/>
<
corners
android:radius
=
"integer
"
android:topLeftRadius
=
"integer
"
android:topRightRadius
=
"integer
"
android:bottomLeftRadius
=
"integer
"
android:bottomRightRadius
=
"integer
"
/>
</shape>
Elements
:
<shape>
必须。必须是根元素。
Attributes
:
android:shape
Keyword
。定义
Shape
的类型。有效的值包括:
接下来的特性只能在
android:shape=”ring”
时使用:
android:innerRadius
Dimension
。内环的半径。
android:innerRadiusRatio
Float
。以环的宽度比率来表示内环的半径。例如,如果
android:innerRadiusRatio=”5”
,内环半径等于环的宽度除以
5
。这个值可以被
android:innerRadius
覆盖。默认值是
9
。
android:thickness
Dimension
。环的厚度。
android:thicknessRatio
Float
。以环的宽度比率来表示环的厚度。例如,如果
android:thicknessRatio=”2”
,厚度就等于环的宽度除以
2
。这个值可以被
android:thickness
覆盖。默认值是
3
。
android:useLevel
Boolean
。“
true
”表示可以当作
LevelListDrawable
使用。一般都为“
false
”。
<gradient>
为
Shape
指定渐变色。
Attributes
:
android:angle
Integer
。渐变色的角度值。
0
表示从左到右,
90
表示从下到上。必须是
45
的倍数,默认是
0
。
android:centerX
Float
。渐变色中心的
X
相对位置(
0-1.0
)。当
android:type=”linear”
时无效。
android:centerY
Float
。渐变色中心的
Y
相对位置(
0-1.0
)。当
android:type=”linear”
时无效。
android:centerColor
Color
。可选的颜色,出现在
start
和
end
颜色之间。
android:endColor
Color
。
end
颜色。
android:gradientRadius
Float
。渐变色的半径。当
android:type=”radial”
时有效。
android:startColor
Color
。
start
颜色。
android:type
Keyword
。渐变色的样式。有效值为:
android:useLevel
Boolean
。“
true
”表示可以当作
LevelListDrawable
使用。
<solid>
填充
shape
的单一色。
Attributes
:
android:color
Color
。这个颜色会应用到
shape
上。
<stroke>
shape
的线形。
Attributes
:
android:width
Dimension
。线的厚度。
android:color
Color
。线的颜色。
android:dashGap
Dimension
。间断线间的距离。仅在
android:dashWidth
设定时有效。
android:dashWidth
Dimension
。间断线的大小。仅在
android:dashGap
设定时有效。
<padding>
内部
View
元素的边距。
Attributes
:
android:left
Dimension
。左内边距。
android:top
Dimension
。上内边距。
android:right
Dimension
。右内边距。
android:bottom
Dimension
。下内边距。
<corners>
为
shape
创建圆角。当
shape
是一个矩形时有效。
Attributes
:
android:radius
Dimension
。圆角的半径。会被下面的特性覆盖。
android:topLeftRadius
Dimension
。左上圆角半径。
android:topRightRadius
Dimension
。右上圆角半径。
android:bottomLeftRadius
Dimension
。左下圆角半径。
android:bottomRightRadius
Dimension
。右下圆角半径。
Examples
:
XML
文件保存在
res/drawable/gradient_box.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>
Layout XML
将被当作
ShapeDrawable
应用到一个
View
上:
<TextView
android:background
=
"@drawable/gradient_box"
android:layout_height
=
"wrap_content"
android:layout_width
=
"wrap_content"
/>
代码中也可以获得
ShapeDrawable
,然后应用到
View
上:
Resources
res
=
getResources
()
;
Drawable
shape
=
res
.
getDrawable
(
R
.
drawable
.
gradient_box
);
TextView
tv
=
(
TextView
)
findViewByID
(
R
.
id
.
textview
);
tv
.
setBackground
(
shape
);
Drawable
资源是对图像的一个抽象,你可以通过
getDrawable(int)
得到并绘制到屏幕上。这里有几种不同类型的
Drawable
:
Bitmap File
一个
Bitmap
图像文件(
.png
、
.jpg
或
.gif
)。
BitmapDrawable
。
Nine-Patch File
一个带有伸缩区域的
PNG
文件,可以基于
content
伸缩图片(
.9.png
)。
NinePatchDrawable
。
State List
一个
XML
文件,为不同的状态引用不同的
Bitmap
图像(例如,当按钮按下时使用不同的图片)。
StateListDrawable
。
Color
定义在
XML
中的资源,指定一个矩形(圆角可以有)的颜色。
PaintDrawable
。
Shape
一个
XML
文件,定义了一个几何形状,包括颜色和渐变。
ShapeDrawable
。
AnimationDrawable
资源的说明在【
Animation
资源】文章中。
Bitmap File
基本的
Bitmap
图像。
Android
支持几种不同格式的
Bitmap
文件:
.png
(最佳)、
.jpg
(可接受)、
.gif
(不要)。
注意:
Bitmap
文件可能会被
aapt
工具进行无损图像压缩优化。例如,一个真彩色的
PNG
(不超过
256
色)可能会被转换成一个带有颜色板的
8
位
PNG
。这样做能保证图片质量一样,但减少内存占用。因此,需要了解的是放在这个文件夹下的二进制图像在编译时可能会发生变更。如果你打算以位流方式读取图像来转化成
Bitmap
的话,可以把它们放到
res/raw
文件中,在这里,它们不会被优化。
File Location
:
res/drawable/filename.png (.png, .jpg,
或
.gif)
文件名会被当作资源
ID
使用。
Complied Resource Datatype
:
指向
BitmapDrawable
的资源指针。
Resource Reference
:
R.drawable.filename
(
Java
)
@[package:]drawable/filename
(
XML
)
Example
:
在
res/drawable/myimage.png
位置保存了一张图片,在
Layout XML
中可以应用这个图片到一个
View
上:
<ImageView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/myimage" />
下面的代码可以以
Drawable
方式得到图片:
Resources res = getResources();
Drawable drawable = res.getDrawable(R.drawable.myimage);
Nine-Patch File
NinePatch
是一种
PNG
图像,可以定义拉伸区域,当
View
的
content
超出图像边界的话,
Android
会拉伸它。典型用法是把这个图像设置为
View
的背景,而这个
View
至少有一个尺寸设置为“
wrap_content
”,当这个
View
变大来容纳
content
时,
Nine-Patch
图像也会拉伸来匹配
View
的大小。
File Location
:
res/drawable/filename.9.png
文件名将被当作资源
ID
使用。
Complied Resource Datatype
:
指向
NinePatchDrawable
的资源指针。
Resource Reference
:
R.drawable.filename
(
Java
)
@[package:]drawable/filename
(
XML
)
Example
:
在
res/drawable/myninepatch.9.png
位置保存了一张图片,在
Layout XML
中可以应用这个图片到一个
View
上:
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:background="@drawable/myninepatch" />
State List
StateListDrawable
是定义在
XML
中的
Drawable
对象,能根据状态来呈现不同的图像。例如,
Button
存在多种不同的状态(
pressed
、
focused
或
other
),使用
StateListDrawable
,你可以为
Button
的每个状态提供不同的按钮图像。
你可以在
XML
文件中描述状态列表。在
<selector>
元素里的每个
<item>
代表每个图像。每个
<item>
使用不同的特性来描述使用的时机。
当每次状态改变时,
StateList
都会从上到下遍历一次,第一个匹配当前状态的
item
将被使用——选择的过程不是基于“最佳匹配”,只是符合
state
的最低标准的第一个
item
。
File Location
Res/drawable/filename.xml
文件名将被当作资源
ID
使用。
Complied Resource Datatype
:
指向
StateListDrawable
的资源指针。
Resource Reference
:
R.drawable.filename
(
Java
)
@[package:]drawable/filename
(
XML
)
Syntax
:
<?
xml version
=
"1.0"
encoding
=
"utf-8"
?>
<
selector
xmlns:android
=
"http://schemas.android.com/apk/res/android"
android:constantSize
=
["true"
|
"false"
]
android:dither
=
["true"
|
"false"
]
android:variablePadding
=
["true"
|
"false"
]
>
<
item
android:drawable
=
"@[package:]drawable/drawable_resource
"
android:state_pressed
=
["true"
|
"false"
]
android:state_focused
=
["true"
|
"false"
]
android:state_selected
=
["true"
|
"false"
]
android:state_active
=
["true"
|
"false"
]
android:state_checkable
=
["true"
|
"false"
]
android:state_checked
=
["true"
|
"false"
]
android:state_enabled
=
["true"
|
"false"
]
android:state_window_focused
=
["true"
|
"false"
]
/>
</selector>
Elements
:
<selector>
必须。必须是根元素。可以包含一个或多个
<item>
元素。
Attributes
:
xmlns:android
String
。必须。定义
XML
的命名空间,必须是
“ http://schemas.android.com/apk/res/android
”。
android:constantSize
Boolean
。“
true
”表示随着状态变化,
Drawable
的大小保持不变(所有状态中最大的
size
);“
false
”表示大小会变化。默认是
false
。
android:dither
Boolean
。“
true
”表示当
Bitmap
和屏幕的不是相同的像素设定时支持
Bitmap
抖动(例如,
ARGB 8888
的
Bitmap
和
RGB 565
的屏幕);“
false
”表示不支持。默认是“
true
”。
android:variablePadding
Boolean
。“
true
”表示
Drawable
的
Padding
可以变化;“
false
”表示
Padding
保持相同(所有状态的最大
Padding
)。使能这一特征需要在状态变化时处理
Layout
,一般都不支持。默认值是
false
。
<item>
定义特定状态的
Drawable
,通过它的特性指定。必须是
<selector>
的子元素。
Attributes
:
android:drawable
Drawable
资源。必须。指向一个
Drawable
资源。
android:state_pressed
Boolean
。“
true
”表示按下状态使用(例如按钮按下);“
false
”表示非按下状态使用。
android:state_focused
Boolean
。“
true
”表示聚焦状态使用(例如使用滚动球
/D-pad
聚焦
Button
);“
false
”表示非聚焦状态使用。
android:state_selected
Boolean
。“
true
”表示选中状态使用(例如
Tab
打开);“
false
”表示非选中状态使用。
android:state_checkable
Boolean
。“
true
”表示可勾选状态时使用;“
false
”表示非可勾选状态使用。(只对能切换可勾选—非可勾选的构件有用。)
android:state_checked
Boolean
。“
true
”表示勾选状态使用;“
false
”表示非勾选状态使用。
android:state_enabled
Boolean
。“
true
”表示可用状态使用(能接收触摸
/
点击事件);“
false
”表示不可用状态使用。
android:window_focused
Boolean
。“
true
”表示应用程序窗口有焦点时使用(应用程序在前台);“
false
”表示无焦点时使用(例如
Notification
栏拉下或对话框显示)。
注意:
记住一点,
StateList
中第一个匹配当前状态的
item
会被使用。因此,如果第一个
item
没有任何状态特性的话,那么它将每次都被使用,这也是为什么默认的值必须总是在最后(如下面的例子所示)。
Example
:
XML
文件保存在
res/drawable/button.xml
。
<?
xml version
=
"1.0"
encoding
=
"utf-8"
?>
<selector
xmlns:android
=
"http://schemas.android.com/apk/res/android"
>
<item
android:state_pressed
=
"true"
android:drawable
=
"@drawable/button_pressed"
/>
<!-- pressed -->
<item
android:state_focused
=
"true"
android:drawable
=
"@drawable/button_focused"
/>
<!-- focused -->
<item
android:drawable
=
"@drawable/button_normal"
/>
<!-- default -->
</selector>
Layout XML
将这个
Drawable
应用到一个
View
上:
<ImageView
android:layout_height
=
"wrap_content"
android:layout_width
=
"wrap_content"
android:src
=
"@drawable/button"
/>
Color
定义在
XML
中的
color
,可以当作
Drawable
使用,来填充矩形区域(圆角可以有)。这种
Drawable
的行为很像是颜色填充。
注意:
Color Drawable
是一种简单的资源,可以使用
name
特性来引用其值(不再是
XML
文件的名)。因此,你可以在一个
XML
文件中的
<resources>
元素下添加多个
Color Drawable
。
File Location
:
res/drawable/filename.xml
文件名随意。元素的
name
将会当作资源
ID
使用。
Complied Resource Datatype
:
指向
PaintDrawable
资源的指针。
Resource Reference
:
R.drawable.color_name
(
Java
)
@[package:]drawable/color_name
(
XML
)
Syntax
:
<?
xml version
=
"1.0"
encoding
=
"utf-8"
?>
<
resources
>
<
drawable
name
=
"color_name
"
>
color
</drawable>
</resources>
Elements
:
<resources>
必须。必须是根节点。
没有特性。
<drawable>
一个
color Drawable
。其值可以是任何有效的十六进制颜色值或者
Color
资源。
Color
值总是以“
#
”开头,后面紧跟
Alpha-Red-Green-Blue
信息,格式是:
#RGB
、
#ARGB
或者
#AARRGGBB
。
Attributes
:
name
String
。必须。
Color
的名字。这个名字将被当作资源
ID
使用。
Example
:
XML
文件保存在
res/drawable/color.xml
。
<?
xml version
=
"1.0"
encoding
=
"utf-8"
?>
<resources>
<drawable
name
=
"solid_red"
>
#f00
</drawable>
<drawable
name
=
"solid_blue"
>
#0000ff
</drawable>
</resources>
Layout XML
将会把这个
Color Drawable
应用到一个
View
上:
<TextView
android:layout_width
=
"fill_parent"
android:layout_height
=
"wrap_content"
android:background
=
"@drawable/solid_blue"
/>
代码中获取
Color Drawable
并应用到
View
上:
Resources
res
=
getResources
()
;
Drawable
redDrawable
=
res
.
getDrawable
(
R
.
drawable
.
solid_red
);
TextView
tv
=
(
TextView
)
findViewByID
(
R
.
id
.
text
);
tv
.
setBackground
(
redDrawable
);
Shape
定义在
XML
中的几何形状。
File Location
:
res/drawable/filename.xml
文件名将被当作资源
ID
使用。
Complied Resource Datatype
:
指向
ShapeDrawable
的资源指针。
Resource Reference
:
R.drawable.filename
(
Java
)
@[package:]drawable/filename
(
XML
)
Syntax
:
<?
xml version
=
"1.0"
encoding
=
"utf-8"
?>
<
shape
xmlns:android
=
"http://schemas.android.com/apk/res/android"
android:shape
=
["rectangle"
|
"oval"
|
"line"
|
"ring"
]
>
<
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:usesLevel
=
["true"
|
"false"
]
/>
<
solid
android:color
=
"color
"
/>
<
stroke
android:width
=
"integer
"
android:color
=
"color
"
android:dashWidth
=
"integer
"
android:dashGap
=
"integer
"
/>
<
padding
android:left
=
"integer
"
android:top
=
"integer
"
android:right
=
"integer
"
android:bottom
=
"integer
"
/>
<
corners
android:radius
=
"integer
"
android:topLeftRadius
=
"integer
"
android:topRightRadius
=
"integer
"
android:bottomLeftRadius
=
"integer
"
android:bottomRightRadius
=
"integer
"
/>
</shape>
Elements
:
<shape>
必须。必须是根元素。
Attributes
:
android:shape
Keyword
。定义
Shape
的类型。有效的值包括:
Value | Desciption |
"rectangle" | 矩形。默认形状。 |
"oval" | 椭圆。 |
"line" | 水平直线。需要 <stroke> 元素定义线的宽度。 |
"ring" | 环形。 |
android:shape=”ring”
时使用:
android:innerRadius
Dimension
。内环的半径。
android:innerRadiusRatio
Float
。以环的宽度比率来表示内环的半径。例如,如果
android:innerRadiusRatio=”5”
,内环半径等于环的宽度除以
5
。这个值可以被
android:innerRadius
覆盖。默认值是
9
。
android:thickness
Dimension
。环的厚度。
android:thicknessRatio
Float
。以环的宽度比率来表示环的厚度。例如,如果
android:thicknessRatio=”2”
,厚度就等于环的宽度除以
2
。这个值可以被
android:thickness
覆盖。默认值是
3
。
android:useLevel
Boolean
。“
true
”表示可以当作
LevelListDrawable
使用。一般都为“
false
”。
<gradient>
为
Shape
指定渐变色。
Attributes
:
android:angle
Integer
。渐变色的角度值。
0
表示从左到右,
90
表示从下到上。必须是
45
的倍数,默认是
0
。
android:centerX
Float
。渐变色中心的
X
相对位置(
0-1.0
)。当
android:type=”linear”
时无效。
android:centerY
Float
。渐变色中心的
Y
相对位置(
0-1.0
)。当
android:type=”linear”
时无效。
android:centerColor
Color
。可选的颜色,出现在
start
和
end
颜色之间。
android:endColor
Color
。
end
颜色。
android:gradientRadius
Float
。渐变色的半径。当
android:type=”radial”
时有效。
android:startColor
Color
。
start
颜色。
android:type
Keyword
。渐变色的样式。有效值为:
Value | Description |
"linear" | 线性渐变,默认值。 |
"radial" | 环形渐变。 start 颜色是处于中间的颜色。 |
"sweep" | sweep 渐变 |
Boolean
。“
true
”表示可以当作
LevelListDrawable
使用。
<solid>
填充
shape
的单一色。
Attributes
:
android:color
Color
。这个颜色会应用到
shape
上。
<stroke>
shape
的线形。
Attributes
:
android:width
Dimension
。线的厚度。
android:color
Color
。线的颜色。
android:dashGap
Dimension
。间断线间的距离。仅在
android:dashWidth
设定时有效。
android:dashWidth
Dimension
。间断线的大小。仅在
android:dashGap
设定时有效。
<padding>
内部
View
元素的边距。
Attributes
:
android:left
Dimension
。左内边距。
android:top
Dimension
。上内边距。
android:right
Dimension
。右内边距。
android:bottom
Dimension
。下内边距。
<corners>
为
shape
创建圆角。当
shape
是一个矩形时有效。
Attributes
:
android:radius
Dimension
。圆角的半径。会被下面的特性覆盖。
android:topLeftRadius
Dimension
。左上圆角半径。
android:topRightRadius
Dimension
。右上圆角半径。
android:bottomLeftRadius
Dimension
。左下圆角半径。
android:bottomRightRadius
Dimension
。右下圆角半径。
Examples
:
XML
文件保存在
res/drawable/gradient_box.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>
Layout XML
将被当作
ShapeDrawable
应用到一个
View
上:
<TextView
android:background
=
"@drawable/gradient_box"
android:layout_height
=
"wrap_content"
android:layout_width
=
"wrap_content"
/>
代码中也可以获得
ShapeDrawable
,然后应用到
View
上:
Resources
res
=
getResources
()
;
Drawable
shape
=
res
.
getDrawable
(
R
.
drawable
.
gradient_box
);
TextView
tv
=
(
TextView
)
findViewByID
(
R
.
id
.
textview
);
tv
.
setBackground
(
shape
);
相关文章推荐
- android makefile批处理文件夹的资源
- Android 资源文件使用方法详解
- android开发中资源文件和资源ID是如何映射的
- Android资源文件strings中写入“...”的方法
- Android 使用Vector XML文件创建矢量图片资源
- 如何引用android系统公开(非公开)的资源文件,包括字符串,layout,color,等等
- android中的资源文件
- Android APK反编译查看源码及资源文件
- 关于Android项目中打包资源文件到apk的总结
- Android资源文件中各种XML的作用与解释
- Android资源文件及文件夹介绍
- Android各个资源文件
- Android xml资源文件中@、@*、@+、@?、@android:type的区别
- Android读取资源文件——读取原始Xml内容和使用Menu文件
- Android将Activity打成jar包供第三方调用(解决资源文件不能打包的问题)
- android 资源文件
- Android 上传资源文件中的图片
- android从未安装的apk文件里获取信息(包信息,资源信息)
- Android xml资源文件中@、@android:type、@*、?、@+含义和区别
- 将Android工程做成jar包和资源文件