Android的资源类型之Drawable
2016-07-13 18:17
459 查看
Drawable资源概述:
一种可以通过getDrawable(int)方法获取到的,或者可以通过android:drawable和android:icon属性应用到XML文件的资源。个人理解,可以转成Drawable对象的资源。
Drawable资源分类:
可当做drawable处理的资源有一下几类:
1、图片文件,包括.9图片文件。
2、LayerDrawable类,或者以<layer-list>为根节点,<item>为子节点的xml文件。
如:ProgressBar的一级进度色和二级进度色,用的就是这种资源。
3、StateListDrawable类,或者以<selector>为根节点,<item>为子节点的xml文件。<item>节点内通过android:state_pressed等属性判断该item的显示与否。
如:按钮的点击效果。
4、LevelListDrawable类,或者以<level-list>为根节点,<item>为子节点的xml文件。<item>节点内通过android:maxLevel属性判断等级范围来决定item的显示与否。
如:活动类型图标,可通过ImageView的setImageLevel方法,通过设置等级来显示不同图标。
5、TransitionDrawable类,或者以<transition>为根节点,<item>为子节点的XML文件。通过TransitionDrawable的startTransition(int seconds)来执行item依次渐变。
如:常用嵌入其他节点使用。
6、InsetDrawable类,或者以<inset>为根节点的XML文件。通过android:insetTop等属性设置距背景图顶部的距离,类似于paddingTop。
如:常用嵌入其他节点使用。
7、ClipDrawable类,或者以<clip>为根节点的XML文件。通过android:clipOrientation等属性设置裁剪方向。
如:ProgressBar的进度条,就是通过裁剪实现的。通过drawable.setLevel设置裁剪,默认level是0,完全裁剪,图片不显示;当level为10,000时,不裁剪。
8、ScaleDrawable类,或者以<scale>为根节点的XML文件。通过android:scaleHeight等属性设置缩放方向和比例。
9、GradientDrawable类,或者以<shape>为根节点,<corners><gradient><padding><size><solid><stroke>为子节点的XML文件。
如:圆角描边的按钮。<solid>表示填充,只能设置颜色;stroke表示描边,可设置粗细和颜色等。
10、AnimationDrawable类,或者以<animation-list>为根节点,<item>为子节点的XML文件。通过animationDrawable.start()方法,依次显示item的图片,俗称帧动画。
如:正在加载的提示动画,每个item设置的android:duration为50的话,那么表示每秒加载20帧。而电视机播放的动画影片,不过每秒25帧左右,每帧对应一张图画。
<gradient>元素属性解释:
android:angle integer 渐变梯度的角度,以度为单位。0表示从左至右渐变,90表示从下至上渐变。该值需为45的倍数,默认为0。
android:centerX Float 渐变梯度(0~1.0)的中心位置的X坐标。
android:centerY Float 渐变梯度(0~1.0)的中心位置的Y坐标。
2D Graphics
Vector Asset Studio
A drawable resource is a general concept for a graphic that can be drawn to the screen and which you can retrieve with APIs such as
apply to another XML resource with attributes such as
Bitmap FileA bitmap graphic file (
Also see the Animation Resource document for how to create
an
Note: A color resource can also be used as a drawable in XML. For example, when
creating a state list drawable, you can reference a color resource for the
(
You can reference a bitmap file directly, using the filename as the resource ID, or create an alias resource ID in XML.
Note: Bitmap files may be automatically optimized with lossless image compression by the
an 8-bit PNG with a color palette. This will result in an image of equal quality but which requires less memory. So be aware that the image binaries placed in this directory can change during the build. If you plan on reading an image as a bit stream in order
to convert it to a bitmap, put your images in the
for any of these files when you save them in the
FILE LOCATION:
The filename is used as the resource ID.COMPILED RESOURCE DATATYPE:Resource pointer to a
In XML:
The following application code retrieves the image as a
Drawable drawable = res.
SEE ALSO:
2D Graphics
Note: You can use a
list or layer list, you can exclude the
from an
FILE LOCATION:
The filename is used as the resource ID.COMPILED RESOURCE DATATYPE:Resource pointer to a
In XML:
ELEMENTS:
attributes:
when the
Must be one or more (separated by '|') of the following constant values:
more information. Default value is false.
Must be one of the following constant values:
EXAMPLE:
SEE ALSO:
Creating alias resources
you can define stretchable regions that Android scales when content within the View exceeds the normal image bounds. You typically assign this type of image as the background of a View that has at least one dimension set to
and when the View grows to accomodate the content, the Nine-Patch image is also scaled to match the size of the View. An example use of a Nine-Patch image is the background used by Android's standard
which must stretch to accommodate the text (or image) inside the button.
Same as with a normal bitmap, you can reference
a Nine-Patch file directly or from a resource defined by XML.
For a complete discussion about how to create a Nine-Patch file with stretchable regions, see the 2D
Graphics document.
The filename is used as the resource ID.COMPILED RESOURCE DATATYPE:Resource pointer to a
In XML:
SEE ALSO:
2D Graphics
FILE LOCATION:
The filename is used as the resource ID.COMPILED RESOURCE DATATYPE:Resource pointer to a
In XML:
ELEMENTS:
attributes:
EXAMPLE:
object that manages an array of other drawables. Each drawable in the list is drawn in the order of the list—the last drawable in the list is drawn on top.
Each drawable is represented by an
FILE LOCATION:
The filename is used as the resource ID.COMPILED RESOURCE DATATYPE:Resource pointer to a
In XML:
ELEMENTS:
attributes:
attributes:
a new ID. You can use this identifier to retrieve and modify the drawable with
All drawable items are scaled to fit the size of the containing View, by default. Thus, placing your images in a layer list at different positions might increase the size of the View and some images scale as appropriate.
To avoid scaling items in the list, use a
the following
To avoid scaling, the following example uses a
EXAMPLE:XML file saved at
Notice that this example uses a nested
of the container, due to resizing caused by the offset images.
This layout XML applies the drawable to a View:
The result is a stack of increasingly offset images:
SEE ALSO:
a drawable object defined in XML that uses a several different images to represent the same graphic, depending on the state of the object. For example, a
can exist in one of several different states (pressed, focused, or neither) and, using a state list drawable, you can provide a different background image for each state.
You can describe the state list in an XML file. Each graphic is represented by an
various attributes to describe the state in which it should be used as the graphic for the drawable.
During each state change, the state list is traversed top to bottom and the first item that matches the current state is used—the selection is not based on the "best match," but simply the first item that
meets the minimum criteria of the state.
FILE LOCATION:
The filename is used as the resource ID.COMPILED RESOURCE DATATYPE:Resource pointer to a
In XML:
ELEMENTS:
attributes:
Default is true.
requires that you deal with performing layout when the state changes, which is often not supported. Default is false.
attributes:
for the "focused" state.
Introduced in API level 14.
be used when the object is not selected.
The selected state is used when focus (
widget.)
be used when the object is not activated.
Introduced in API level 11.
example, if the notification shade is pulled down or a dialog appears).
Note: Remember that Android applies the first item in the state list that matches the current state of the object. So, if the first item in the list contains none of the state attributes above, then it is applied every time, which is why your
default value should always be last (as demonstrated in the following example).
EXAMPLE:XML file saved at
This layout XML applies the state list drawable to a Button:
SEE ALSO:
the drawable resource in the level list that has a
FILE LOCATION:
The filename is used as the resource ID.COMPILED RESOURCE DATATYPE:Resource pointer to a
In XML:
ELEMENTS:
attributes:
attributes:
EXAMPLE:
Once this is applied to a
be changed with
SEE ALSO:
a drawable object that can cross-fade between the two drawable resources.
Each drawable is represented by an
To transition backward, call
FILE LOCATION:
The filename is used as the resource ID.COMPILED RESOURCE DATATYPE:Resource pointer to a
In XML:
ELEMENTS:
attributes:
attributes:
a new ID. You can use this identifier to retrieve and modify the drawable with
EXAMPLE:XML file saved at
This layout XML applies the drawable to a View:
And the following code performs a 500ms transition from the first item to the second:
SEE ALSO:
FILE LOCATION:
The filename is used as the resource ID.COMPILED RESOURCE DATATYPE:Resource pointer to a
In XML:
ELEMENTS:
attributes:
resource
resource
resource
resource
EXAMPLE:
SEE ALSO:
to control where it is placed in its overall container. Most often used to implement things like progress bars.
FILE LOCATION:
The filename is used as the resource ID.COMPILED RESOURCE DATATYPE:Resource pointer to a
In XML:
ELEMENTS:
attributes:
Must be one of the following constant values:
Must be one or more (separated by '|') of the following constant values:
EXAMPLE:XML file saved at
The following layout XML applies the clip drawable to a View:
The following code gets the drawable and increases the amount of clipping in order to progressively reveal the image:
Increasing the level reduces the amount of clipping and slowly reveals the image. Here it is at a level of 7000:
Note: The default level is 0, which is fully clipped so the image is not visible. When the level is 10,000, the image is not clipped and completely visible.
SEE ALSO:
FILE LOCATION:
The filename is used as the resource ID.COMPILED RESOURCE DATATYPE:Resource pointer to a
In XML:
ELEMENTS:
attributes:
Must be one or more (separated by '|') of the following constant values:
EXAMPLE:
SEE ALSO:
FILE LOCATION:
The filename is used as the resource ID.COMPILED RESOURCE DATATYPE:Resource pointer to a
In XML:
ELEMENTS:
attributes:
The following attributes are used only when
resource.
by 5. This value is overridden by
resource.
is overridden by
This should normally be "false" or your shape may not appear.
attributes:
resource. This is overridden for each corner by the following attributes.
resource.
resource.
resource.
resource.
Note: Every corner must (initially) be provided a corner radius greater than 1, or else no corners are rounded. If you want specific corners to not be rounded, a work-around is to use
corner radius greater than 1, but then override each and every corner with the values you really want, providing zero ("0dp") where you don't want rounded corners.
attributes:
resource.
resource.
resource.
attributes:
resource.
resource.
resource.
resource.
attributes:
resource.
resource.
Note: The shape scales to the size of the container View proportionate to the dimensions defined here, by default. When you use the shape in an
you can restrict scaling by setting the
attributes:
resource.
attributes:
resource.
resource.
resource. Only valid if
resource. Only valid if
EXAMPLE:XML file saved at
This layout XML applies the shape drawable to a View:
This application code gets the shape drawable and applies it to a View:
Drawable shape = res.
TextView tv = (TextView)findViewByID(R.id.textview);
tv.setBackground(shape);[/code]
SEE ALSO:
一种可以通过getDrawable(int)方法获取到的,或者可以通过android:drawable和android:icon属性应用到XML文件的资源。个人理解,可以转成Drawable对象的资源。
Drawable资源分类:
可当做drawable处理的资源有一下几类:
1、图片文件,包括.9图片文件。
2、LayerDrawable类,或者以<layer-list>为根节点,<item>为子节点的xml文件。
如:ProgressBar的一级进度色和二级进度色,用的就是这种资源。
3、StateListDrawable类,或者以<selector>为根节点,<item>为子节点的xml文件。<item>节点内通过android:state_pressed等属性判断该item的显示与否。
如:按钮的点击效果。
4、LevelListDrawable类,或者以<level-list>为根节点,<item>为子节点的xml文件。<item>节点内通过android:maxLevel属性判断等级范围来决定item的显示与否。
如:活动类型图标,可通过ImageView的setImageLevel方法,通过设置等级来显示不同图标。
5、TransitionDrawable类,或者以<transition>为根节点,<item>为子节点的XML文件。通过TransitionDrawable的startTransition(int seconds)来执行item依次渐变。
如:常用嵌入其他节点使用。
6、InsetDrawable类,或者以<inset>为根节点的XML文件。通过android:insetTop等属性设置距背景图顶部的距离,类似于paddingTop。
如:常用嵌入其他节点使用。
7、ClipDrawable类,或者以<clip>为根节点的XML文件。通过android:clipOrientation等属性设置裁剪方向。
如:ProgressBar的进度条,就是通过裁剪实现的。通过drawable.setLevel设置裁剪,默认level是0,完全裁剪,图片不显示;当level为10,000时,不裁剪。
8、ScaleDrawable类,或者以<scale>为根节点的XML文件。通过android:scaleHeight等属性设置缩放方向和比例。
9、GradientDrawable类,或者以<shape>为根节点,<corners><gradient><padding><size><solid><stroke>为子节点的XML文件。
如:圆角描边的按钮。<solid>表示填充,只能设置颜色;stroke表示描边,可设置粗细和颜色等。
10、AnimationDrawable类,或者以<animation-list>为根节点,<item>为子节点的XML文件。通过animationDrawable.start()方法,依次显示item的图片,俗称帧动画。
如:正在加载的提示动画,每个item设置的android:duration为50的话,那么表示每秒加载20帧。而电视机播放的动画影片,不过每秒25帧左右,每帧对应一张图画。
<gradient>元素属性解释:
android:angle integer 渐变梯度的角度,以度为单位。0表示从左至右渐变,90表示从下至上渐变。该值需为45的倍数,默认为0。
android:centerX Float 渐变梯度(0~1.0)的中心位置的X坐标。
android:centerY Float 渐变梯度(0~1.0)的中心位置的Y坐标。
Drawable Resources
See also
2D GraphicsVector Asset Studio
A drawable resource is a general concept for a graphic that can be drawn to the screen and which you can retrieve with APIs such as
getDrawable(int)or
apply to another XML resource with attributes such as
android:drawableand
android:icon. There are several different types of drawables:
Bitmap FileA bitmap graphic file (
.png,
.jpg, or
.gif). Creates a
BitmapDrawable.Nine-Patch FileA PNG file with stretchable regions to allow image resizing based on content (
.9.png). Creates a
NinePatchDrawable.Layer ListA Drawable that manages an array of other Drawables. These are drawn in array order, so the element with the largest index is be drawn on top. Creates a
LayerDrawable.State ListAn XML file that references different bitmap graphics for different states (for example, to use a different image when a button is pressed). Creates a
StateListDrawable.Level ListAn XML file that defines a drawable that manages a number of alternate Drawables, each assigned a maximum numerical value. Creates a
LevelListDrawable.Transition DrawableAn XML file that defines a drawable that can cross-fade between two drawable resources. Creates a
TransitionDrawable.Inset DrawableAn XML file that defines a drawable that insets another drawable by a specified distance. This is useful when a View needs a background drawble that is smaller than the View's actual bounds.Clip DrawableAn XML file that defines a drawable that clips another Drawable based on this Drawable's current level value. Creates a
ClipDrawable.Scale DrawableAn XML file that defines a drawable that changes the size of another Drawable based on its current level value. Creates a
ScaleDrawableShape DrawableAn XML file that defines a geometric shape, including colors and gradients. Creates a
ShapeDrawable.
Also see the Animation Resource document for how to create
an
AnimationDrawable.
Note: A color resource can also be used as a drawable in XML. For example, when
creating a state list drawable, you can reference a color resource for the
android:drawableattribute
(
android:drawable="@color/green").
Bitmap
A bitmap image. Android supports bitmap files in three formats:.png(preferred),
.jpg(acceptable),
.gif(discouraged).
You can reference a bitmap file directly, using the filename as the resource ID, or create an alias resource ID in XML.
Note: Bitmap files may be automatically optimized with lossless image compression by the
aapttool during the build process. For example, a true-color PNG that does not require more than 256 colors may be converted to
an 8-bit PNG with a color palette. This will result in an image of equal quality but which requires less memory. So be aware that the image binaries placed in this directory can change during the build. If you plan on reading an image as a bit stream in order
to convert it to a bitmap, put your images in the
res/raw/folder instead, where they will not be optimized.
Bitmap File
A bitmap file is a.png,
.jpg, or
.giffile. Android creates a
Drawableresource
for any of these files when you save them in the
res/drawable/directory.
FILE LOCATION:
res/drawable/filename.png(
.png,
.jpg, or
.gif)
The filename is used as the resource ID.COMPILED RESOURCE DATATYPE:Resource pointer to a
BitmapDrawable.RESOURCE REFERENCE:In Java:
R.drawable.filename
In XML:
@[package:]drawable/filenameEXAMPLE:With an image saved at
res/drawable/myimage.png, this layout XML applies the image to a View:
<ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/myimage" />
The following application code retrieves the image as a
Drawable:
Resources res = [code]getResources();
Drawable drawable = res.
getDrawable(R.drawable.myimage);[/code]
SEE ALSO:
2D Graphics
BitmapDrawable
XML Bitmap
An XML bitmap is a resource defined in XML that points to a bitmap file. The effect is an alias for a raw bitmap file. The XML can specify additional properties for the bitmap such as dithering and tiling.Note: You can use a
<bitmap>element as a child of an
<item>element. For example, when creating a state
list or layer list, you can exclude the
android:drawableattribute
from an
<item>element and nest a
<bitmap>inside it that defines the drawable item.
FILE LOCATION:
res/drawable/filename.xml
The filename is used as the resource ID.COMPILED RESOURCE DATATYPE:Resource pointer to a
BitmapDrawable.RESOURCE REFERENCE:In Java:
R.drawable.filename
In XML:
@[package:]drawable/filenameSYNTAX:
<?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@[package:]drawable/drawable_resource" android:antialias=["true" | "false"] android:dither=["true" | "false"] android:filter=["true" | "false"] android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" | "fill_vertical" | "center_horizontal" | "fill_horizontal" | "center" | "fill" | "clip_vertical" | "clip_horizontal"] android:mipMap=["true" | "false"] android:tileMode=["disabled" | "clamp" | "repeat" | "mirror"] />
ELEMENTS:
<bitmap>Defines the bitmap source and its properties.
attributes:
xmlns:androidString. Defines the XML namespace, which must be
"http://schemas.android.com/apk/res/android". This is required only if the
<bitmap>is the root element—it is not needed
when the
<bitmap>is nested inside an
<item>.
android:srcDrawable resource. Required. Reference to a drawable resource.
android:antialiasBoolean. Enables or disables antialiasing.
android:ditherBoolean. Enables or disables dithering of the bitmap if the bitmap does not have the same pixel configuration as the screen (for instance: a ARGB 8888 bitmap with an RGB 565 screen).
android:filterBoolean. Enables or disables bitmap filtering. Filtering is used when the bitmap is shrunk or stretched to smooth its apperance.
android:gravityKeyword. Defines the gravity for the bitmap. The gravity indicates where to position the drawable in its container if the bitmap is smaller than the container.
Must be one or more (separated by '|') of the following constant values:
Value | Description |
---|---|
top | Put the object at the top of its container, not changing its size. |
bottom | Put the object at the bottom of its container, not changing its size. |
left | Put the object at the left edge of its container, not changing its size. |
right | Put the object at the right edge of its container, not changing its size. |
center_vertical | Place object in the vertical center of its container, not changing its size. |
fill_vertical | Grow the vertical size of the object if needed so it completely fills its container. |
center_horizontal | Place object in the horizontal center of its container, not changing its size. |
fill_horizontal | Grow the horizontal size of the object if needed so it completely fills its container. |
center | Place the object in the center of its container in both the vertical and horizontal axis, not changing its size. |
fill | Grow the horizontal and vertical size of the object if needed so it completely fills its container. This is the default. |
clip_vertical | Additional option that can be set to have the top and/or bottom edges of the child clipped to its container's bounds. The clip is based on the vertical gravity: a top gravity clips the bottom edge, a bottom gravity clips the top edge, and neither clips both edges. |
clip_horizontal | Additional option that can be set to have the left and/or right edges of the child clipped to its container's bounds. The clip is based on the horizontal gravity: a left gravity clips the right edge, a right gravity clips the left edge, and neither clips both edges. |
android:mipMapBoolean. Enables or disables the mipmap hint. See
setHasMipMap()for
more information. Default value is false.
android:tileModeKeyword. Defines the tile mode. When the tile mode is enabled, the bitmap is repeated. Gravity is ignored when the tile mode is enabled.
Must be one of the following constant values:
Value | Description |
---|---|
disabled | Do not tile the bitmap. This is the default value. |
clamp | Replicates the edge color if the shader draws outside of its original bounds |
repeat | Repeats the shader's image horizontally and vertically. |
mirror | Repeats the shader's image horizontally and vertically, alternating mirror images so that adjacent images always seam. |
<?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/icon" android:tileMode="repeat" />
SEE ALSO:
BitmapDrawable
Creating alias resources
Nine-Patch
ANinePatchis a PNG image in which
you can define stretchable regions that Android scales when content within the View exceeds the normal image bounds. You typically assign this type of image as the background of a View that has at least one dimension set to
"wrap_content",
and when the View grows to accomodate the content, the Nine-Patch image is also scaled to match the size of the View. An example use of a Nine-Patch image is the background used by Android's standard
Buttonwidget,
which must stretch to accommodate the text (or image) inside the button.
Same as with a normal bitmap, you can reference
a Nine-Patch file directly or from a resource defined by XML.
For a complete discussion about how to create a Nine-Patch file with stretchable regions, see the 2D
Graphics document.
Nine-Patch File
FILE LOCATION:res/drawable/filename.9.png
The filename is used as the resource ID.COMPILED RESOURCE DATATYPE:Resource pointer to a
NinePatchDrawable.RESOURCE REFERENCE:In Java:
R.drawable.filename
In XML:
@[package:]drawable/filenameEXAMPLE:With an image saved at
res/drawable/myninepatch.9.png, this layout XML applies the Nine-Patch to a View:
<Button android:layout_height="wrap_content" android:layout_width="wrap_content" android:background="@drawable/myninepatch" />
SEE ALSO:
2D Graphics
NinePatchDrawable
XML Nine-Patch
An XML Nine-Patch is a resource defined in XML that points to a Nine-Patch file. The XML can specify dithering for the image.FILE LOCATION:
res/drawable/filename.xml
The filename is used as the resource ID.COMPILED RESOURCE DATATYPE:Resource pointer to a
NinePatchDrawable.RESOURCE REFERENCE:In Java:
R.drawable.filename
In XML:
@[package:]drawable/filenameSYNTAX:
<?xml version="1.0" encoding="utf-8"?> <nine-patch xmlns:android="http://schemas.android.com/apk/res/android" android:src="@[package:]drawable/drawable_resource" android:dither=["true" | "false"] />
ELEMENTS:
<nine-patch>Defines the Nine-Patch source and its properties.
attributes:
xmlns:androidString. Required. Defines the XML namespace, which must be
"http://schemas.android.com/apk/res/android".
android:srcDrawable resource. Required. Reference to a Nine-Patch file.
android:ditherBoolean. Enables or disables dithering of the bitmap if the bitmap does not have the same pixel configuration as the screen (for instance: a ARGB 8888 bitmap with an RGB 565 screen).
EXAMPLE:
<?xml version="1.0" encoding="utf-8"?> <nine-patch xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/myninepatch" android:dither="false" />
Layer List
ALayerDrawableis a drawable
object that manages an array of other drawables. Each drawable in the list is drawn in the order of the list—the last drawable in the list is drawn on top.
Each drawable is represented by an
<item>element inside a single
<layer-list>element.
FILE LOCATION:
res/drawable/filename.xml
The filename is used as the resource ID.COMPILED RESOURCE DATATYPE:Resource pointer to a
LayerDrawable.RESOURCE REFERENCE:In Java:
R.drawable.filename
In XML:
@[package:]drawable/filenameSYNTAX:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@[package:]drawable/drawable_resource" android:id="@[+][package:]id/resource_name" android:top="dimension" android:right="dimension" android:bottom="dimension" android:left="dimension" /> </layer-list>
ELEMENTS:
<layer-list>Required. This must be the root element. Contains one or more
<item>elements.
attributes:
xmlns:androidString. Required. Defines the XML namespace, which must be
"http://schemas.android.com/apk/res/android".
<item>Defines a drawable to place in the layer drawable, in a position defined by its attributes. Must be a child of a
<selector>element. Accepts child
<bitmap>elements.
attributes:
android:drawableDrawable resource. Required. Reference to a drawable resource.
android:idResource ID. A unique resource ID for this drawable. To create a new resource ID for this item, use the form:
"@+id/name". The plus symbol indicates that this should be created as
a new ID. You can use this identifier to retrieve and modify the drawable with
View.findViewById()or
Activity.findViewById().
android:topInteger. The top offset in pixels.
android:rightInteger. The right offset in pixels.
android:bottomInteger. The bottom offset in pixels.
android:leftInteger. The left offset in pixels.
All drawable items are scaled to fit the size of the containing View, by default. Thus, placing your images in a layer list at different positions might increase the size of the View and some images scale as appropriate.
To avoid scaling items in the list, use a
<bitmap>element inside the
<item>element to specify the drawable and define the gravity to something that does not scale, such as
"center". For example,
the following
<item>defines an item that scales to fit its container View:
<item android:drawable="@drawable/image" />
To avoid scaling, the following example uses a
<bitmap>element with centered gravity:
<item> <bitmap android:src="@drawable/image" android:gravity="center" /> </item>
EXAMPLE:XML file saved at
res/drawable/layers.xml:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <bitmap android:src="@drawable/android_red" android:gravity="center" /> </item> <item android:top="10dp" android:left="10dp"> <bitmap android:src="@drawable/android_green" android:gravity="center" /> </item> <item android:top="20dp" android:left="20dp"> <bitmap android:src="@drawable/android_blue" android:gravity="center" /> </item> </layer-list>
Notice that this example uses a nested
<bitmap>element to define the drawable resource for each item with a "center" gravity. This ensures that none of the images are scaled to fit the size
of the container, due to resizing caused by the offset images.
This layout XML applies the drawable to a View:
<ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/layers" />
The result is a stack of increasingly offset images:
SEE ALSO:
LayerDrawable
State List
AStateListDrawableis
a drawable object defined in XML that uses a several different images to represent the same graphic, depending on the state of the object. For example, a
Buttonwidget
can exist in one of several different states (pressed, focused, or neither) and, using a state list drawable, you can provide a different background image for each state.
You can describe the state list in an XML file. Each graphic is represented by an
<item>element inside a single
<selector>element. Each
<item>uses
various attributes to describe the state in which it should be used as the graphic for the drawable.
During each state change, the state list is traversed top to bottom and the first item that matches the current state is used—the selection is not based on the "best match," but simply the first item that
meets the minimum criteria of the state.
FILE LOCATION:
res/drawable/filename.xml
The filename is used as the resource ID.COMPILED RESOURCE DATATYPE:Resource pointer to a
StateListDrawable.RESOURCE REFERENCE:In Java:
R.drawable.filename
In XML:
@[package:]drawable/filenameSYNTAX:
<?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_hovered=["true" | "false"] android:state_selected=["true" | "false"] android:state_checkable=["true" | "false"] android:state_checked=["true" | "false"] android:state_enabled=["true" | "false"] android:state_activated=["true" | "false"] android:state_window_focused=["true" | "false"] /> </selector>
ELEMENTS:
<selector>Required. This must be the root element. Contains one or more
<item>elements.
attributes:
xmlns:androidString. Required. Defines the XML namespace, which must be
"http://schemas.android.com/apk/res/android".
android:constantSizeBoolean. "true" if the drawable's reported internal size remains constant as the state changes (the size is the maximum of all of the states); "false" if the size varies based on the current state. Default is false.
android:ditherBoolean. "true" to enable dithering of the bitmap if the bitmap does not have the same pixel configuration as the screen (for instance, an ARGB 8888 bitmap with an RGB 565 screen); "false" to disable dithering.
Default is true.
android:variablePaddingBoolean. "true" if the drawable's padding should change based on the current state that is selected; "false" if the padding should stay the same (based on the maximum padding of all the states). Enabling this feature
requires that you deal with performing layout when the state changes, which is often not supported. Default is false.
<item>Defines a drawable to use during certain states, as described by its attributes. Must be a child of a
<selector>element.
attributes:
android:drawableDrawable resource. Required. Reference to a drawable resource.
android:state_pressedBoolean. "true" if this item should be used when the object is pressed (such as when a button is touched/clicked); "false" if this item should be used in the default, non-pressed state.
android:state_focusedBoolean. "true" if this item should be used when the object has input focus (such as when the user selects a text input); "false" if this item should be used in the default, non-focused state.
android:state_hoveredBoolean. "true" if this item should be used when the object is being hovered by a cursor; "false" if this item should be used in the default, non-hovered state. Often, this drawable may be the same drawable used
for the "focused" state.
Introduced in API level 14.
android:state_selectedBoolean. "true" if this item should be used when the object is the current user selection when navigating with a directional control (such as when navigating through a list with a d-pad); "false" if this item should
be used when the object is not selected.
The selected state is used when focus (
android:state_focused) is not sufficient (such as when list view has focus and an item within it is selected with a d-pad).
android:state_checkableBoolean. "true" if this item should be used when the object is checkable; "false" if this item should be used when the object is not checkable. (Only useful if the object can transition between a checkable and non-checkable
widget.)
android:state_checkedBoolean. "true" if this item should be used when the object is checked; "false" if it should be used when the object is un-checked.
android:state_enabledBoolean. "true" if this item should be used when the object is enabled (capable of receiving touch/click events); "false" if it should be used when the object is disabled.
android:state_activatedBoolean. "true" if this item should be used when the object is activated as the persistent selection (such as to "highlight" the previously selected list item in a persistent navigation view); "false" if it should
be used when the object is not activated.
Introduced in API level 11.
android:state_window_focusedBoolean. "true" if this item should be used when the application window has focus (the application is in the foreground), "false" if this item should be used when the application window does not have focus (for
example, if the notification shade is pulled down or a dialog appears).
Note: Remember that Android applies the first item in the state list that matches the current state of the object. So, if the first item in the list contains none of the state attributes above, then it is applied every time, which is why your
default value should always be last (as demonstrated in the following example).
EXAMPLE:XML file saved at
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:state_hovered="true" android:drawable="@drawable/button_focused" /> <!-- hovered --> <item android:drawable="@drawable/button_normal" /> <!-- default --> </selector>
This layout XML applies the state list drawable to a Button:
<Button android:layout_height="wrap_content" android:layout_width="wrap_content" android:background="@drawable/button" />
SEE ALSO:
StateListDrawable
Level List
A Drawable that manages a number of alternate Drawables, each assigned a maximum numerical value. Setting the level value of the drawable withsetLevel()loads
the drawable resource in the level list that has a
android:maxLevelvalue greater than or equal to the value passed to the method.
FILE LOCATION:
res/drawable/filename.xml
The filename is used as the resource ID.COMPILED RESOURCE DATATYPE:Resource pointer to a
LevelListDrawable.RESOURCE REFERENCE:In Java:
R.drawable.filename
In XML:
@[package:]drawable/filenameSYNTAX:
<?xml version="1.0" encoding="utf-8"?> <level-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/drawable_resource" android:maxLevel="integer" android:minLevel="integer" /> </level-list>
ELEMENTS:
<level-list>This must be the root element. Contains one or more
<item>elements.
attributes:
xmlns:androidString. Required. Defines the XML namespace, which must be
"http://schemas.android.com/apk/res/android".
<item>Defines a drawable to use at a certain level.
attributes:
android:drawableDrawable resource. Required. Reference to a drawable resource to be inset.
android:maxLevelInteger. The maximum level allowed for this item.
android:minLevelInteger. The minimum level allowed for this item.
EXAMPLE:
<?xml version="1.0" encoding="utf-8"?> <level-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/status_off" android:maxLevel="0" /> <item android:drawable="@drawable/status_on" android:maxLevel="1" /> </level-list>
Once this is applied to a
View, the level can
be changed with
setLevel()or
setImageLevel().
SEE ALSO:
LevelListDrawable
Transition Drawable
ATransitionDrawableis
a drawable object that can cross-fade between the two drawable resources.
Each drawable is represented by an
<item>element inside a single
<transition>element. No more than two items are supported. To transition forward, call
startTransition().
To transition backward, call
reverseTransition().
FILE LOCATION:
res/drawable/filename.xml
The filename is used as the resource ID.COMPILED RESOURCE DATATYPE:Resource pointer to a
TransitionDrawable.RESOURCE REFERENCE:In Java:
R.drawable.filename
In XML:
@[package:]drawable/filenameSYNTAX:
<?xml version="1.0" encoding="utf-8"?> <transition xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@[package:]drawable/drawable_resource" android:id="@[+][package:]id/resource_name" android:top="dimension" android:right="dimension" android:bottom="dimension" android:left="dimension" /> </transition>
ELEMENTS:
<transition>Required. This must be the root element. Contains one or more
<item>elements.
attributes:
xmlns:androidString. Required. Defines the XML namespace, which must be
"http://schemas.android.com/apk/res/android".
<item>Defines a drawable to use as part of the drawable transition. Must be a child of a
<transition>element. Accepts child
<bitmap>elements.
attributes:
android:drawableDrawable resource. Required. Reference to a drawable resource.
android:idResource ID. A unique resource ID for this drawable. To create a new resource ID for this item, use the form:
"@+id/name". The plus symbol indicates that this should be created as
a new ID. You can use this identifier to retrieve and modify the drawable with
View.findViewById()or
Activity.findViewById().
android:topInteger. The top offset in pixels.
android:rightInteger. The right offset in pixels.
android:bottomInteger. The bottom offset in pixels.
android:leftInteger. The left offset in pixels.
EXAMPLE:XML file saved at
res/drawable/transition.xml:
<?xml version="1.0" encoding="utf-8"?> <transition xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/on" /> <item android:drawable="@drawable/off" /> </transition>
This layout XML applies the drawable to a View:
<ImageButton android:id="@+id/button" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/transition" />
And the following code performs a 500ms transition from the first item to the second:
ImageButton button = (ImageButton) findViewById(R.id.button); TransitionDrawable drawable = (TransitionDrawable) button.getDrawable(); drawable.startTransition(500);
SEE ALSO:
TransitionDrawable
Inset Drawable
A drawable defined in XML that insets another drawable by a specified distance. This is useful when a View needs a background that is smaller than the View's actual bounds.FILE LOCATION:
res/drawable/filename.xml
The filename is used as the resource ID.COMPILED RESOURCE DATATYPE:Resource pointer to a
InsetDrawable.RESOURCE REFERENCE:In Java:
R.drawable.filename
In XML:
@[package:]drawable/filenameSYNTAX:
<?xml version="1.0" encoding="utf-8"?> <inset xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/drawable_resource" android:insetTop="dimension" android:insetRight="dimension" android:insetBottom="dimension" android:insetLeft="dimension" />
ELEMENTS:
<inset>Defines the inset drawable. This must be the root element.
attributes:
xmlns:androidString. Required. Defines the XML namespace, which must be
"http://schemas.android.com/apk/res/android".
android:drawableDrawable resource. Required. Reference to a drawable resource to be inset.
android:insetTopDimension. The top inset, as a dimension value or dimension
resource
android:insetRightDimension. The right inset, as a dimension value or dimension
resource
android:insetBottomDimension. The bottom inset, as a dimension value or dimension
resource
android:insetLeftDimension. The left inset, as a dimension value or dimension
resource
EXAMPLE:
<?xml version="1.0" encoding="utf-8"?> <inset xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/background" android:insetTop="10dp" android:insetLeft="10dp" />
SEE ALSO:
InsetDrawable
Clip Drawable
A drawable defined in XML that clips another drawable based on this Drawable's current level. You can control how much the child drawable gets clipped in width and height based on the level, as well as a gravityto control where it is placed in its overall container. Most often used to implement things like progress bars.
FILE LOCATION:
res/drawable/filename.xml
The filename is used as the resource ID.COMPILED RESOURCE DATATYPE:Resource pointer to a
ClipDrawable.RESOURCE REFERENCE:In Java:
R.drawable.filename
In XML:
@[package:]drawable/filenameSYNTAX:
<?xml version="1.0" encoding="utf-8"?> <clip xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/drawable_resource" android:clipOrientation=["horizontal" | "vertical"] android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" | "fill_vertical" | "center_horizontal" | "fill_horizontal" | "center" | "fill" | "clip_vertical" | "clip_horizontal"] />
ELEMENTS:
<clip>Defines the clip drawable. This must be the root element.
attributes:
xmlns:androidString. Required. Defines the XML namespace, which must be
"http://schemas.android.com/apk/res/android".
android:drawableDrawable resource. Required. Reference to a drawable resource to be clipped.
android:clipOrientationKeyword. The orientation for the clip.
Must be one of the following constant values:
Value | Description |
---|---|
horizontal | Clip the drawable horizontally. |
vertical | Clip the drawable vertically. |
android:gravityKeyword. Specifies where to clip within the drawable.
Must be one or more (separated by '|') of the following constant values:
Value | Description |
---|---|
top | Put the object at the top of its container, not changing its size. When clipOrientationis "vertical", clipping occurs at the bottom of the drawable. |
bottom | Put the object at the bottom of its container, not changing its size. When clipOrientationis "vertical", clipping occurs at the top of the drawable. |
left | Put the object at the left edge of its container, not changing its size. This is the default. When clipOrientationis "horizontal", clipping occurs at the right side of the drawable. This is the default. |
right | Put the object at the right edge of its container, not changing its size. When clipOrientationis "horizontal", clipping occurs at the left side of the drawable. |
center_vertical | Place object in the vertical center of its container, not changing its size. Clipping behaves the same as when gravity is "center". |
fill_vertical | Grow the vertical size of the object if needed so it completely fills its container. When clipOrientationis "vertical", no clipping occurs because the drawable fills the vertical space (unless the drawable level is 0, in which case it's not visible). |
center_horizontal | Place object in the horizontal center of its container, not changing its size. Clipping behaves the same as when gravity is "center". |
fill_horizontal | Grow the horizontal size of the object if needed so it completely fills its container. WhenclipOrientationis "horizontal", no clipping occurs because the drawable fills the horizontal space (unless the drawable level is 0, in which case it's not visible). |
center | Place the object in the center of its container in both the vertical and horizontal axis, not changing its size. When clipOrientationis "horizontal", clipping occurs on the left and right. When clipOrientationis "vertical", clipping occurs on the top and bottom. |
fill | Grow the horizontal and vertical size of the object if needed so it completely fills its container. No clipping occurs because the drawable fills the horizontal and vertical space (unless the drawable level is 0, in which case it's not visible). |
clip_vertical | Additional option that can be set to have the top and/or bottom edges of the child clipped to its container's bounds. The clip is based on the vertical gravity: a top gravity clips the bottom edge, a bottom gravity clips the top edge, and neither clips both edges. |
clip_horizontal | Additional option that can be set to have the left and/or right edges of the child clipped to its container's bounds. The clip is based on the horizontal gravity: a left gravity clips the right edge, a right gravity clips the left edge, and neither clips both edges. |
res/drawable/clip.xml:
<?xml version="1.0" encoding="utf-8"?> <clip xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/android" android:clipOrientation="horizontal" android:gravity="left" />
The following layout XML applies the clip drawable to a View:
<ImageView android:id="@+id/image" android:background="@drawable/clip" android:layout_height="wrap_content" android:layout_width="wrap_content" />
The following code gets the drawable and increases the amount of clipping in order to progressively reveal the image:
ImageView imageview = (ImageView) findViewById(R.id.image); ClipDrawable drawable = (ClipDrawable) imageview.getBackground(); drawable.setLevel(drawable.getLevel() + 1000);
Increasing the level reduces the amount of clipping and slowly reveals the image. Here it is at a level of 7000:
Note: The default level is 0, which is fully clipped so the image is not visible. When the level is 10,000, the image is not clipped and completely visible.
SEE ALSO:
ClipDrawable
Scale Drawable
A drawable defined in XML that changes the size of another drawable based on its current level.FILE LOCATION:
res/drawable/filename.xml
The filename is used as the resource ID.COMPILED RESOURCE DATATYPE:Resource pointer to a
ScaleDrawable.RESOURCE REFERENCE:In Java:
R.drawable.filename
In XML:
@[package:]drawable/filenameSYNTAX:
<?xml version="1.0" encoding="utf-8"?> <scale xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/drawable_resource" android:scaleGravity=["top" | "bottom" | "left" | "right" | "center_vertical" | "fill_vertical" | "center_horizontal" | "fill_horizontal" | "center" | "fill" | "clip_vertical" | "clip_horizontal"] android:scaleHeight="percentage" android:scaleWidth="percentage" />
ELEMENTS:
<scale>Defines the scale drawable. This must be the root element.
attributes:
xmlns:androidString. Required. Defines the XML namespace, which must be
"http://schemas.android.com/apk/res/android".
android:drawableDrawable resource. Required. Reference to a drawable resource.
android:scaleGravityKeyword. Specifies the gravity position after scaling.
Must be one or more (separated by '|') of the following constant values:
Value | Description |
---|---|
top | Put the object at the top of its container, not changing its size. |
bottom | Put the object at the bottom of its container, not changing its size. |
left | Put the object at the left edge of its container, not changing its size. This is the default. |
right | Put the object at the right edge of its container, not changing its size. |
center_vertical | Place object in the vertical center of its container, not changing its size. |
fill_vertical | Grow the vertical size of the object if needed so it completely fills its container. |
center_horizontal | Place object in the horizontal center of its container, not changing its size. |
fill_horizontal | Grow the horizontal size of the object if needed so it completely fills its container. |
center | Place the object in the center of its container in both the vertical and horizontal axis, not changing its size. |
fill | Grow the horizontal and vertical size of the object if needed so it completely fills its container. |
clip_vertical | Additional option that can be set to have the top and/or bottom edges of the child clipped to its container's bounds. The clip is based on the vertical gravity: a top gravity clips the bottom edge, a bottom gravity clips the top edge, and neither clips both edges. |
clip_horizontal | Additional option that can be set to have the left and/or right edges of the child clipped to its container's bounds. The clip is based on the horizontal gravity: a left gravity clips the right edge, a right gravity clips the left edge, and neither clips both edges. |
android:scaleHeightPercentage. The scale height, expressed as a percentage of the drawable's bound. The value's format is XX%. For instance: 100%, 12.5%, etc.
android:scaleWidthPercentage. The scale width, expressed as a percentage of the drawable's bound. The value's format is XX%. For instance: 100%, 12.5%, etc.
EXAMPLE:
<?xml version="1.0" encoding="utf-8"?> <scale xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/logo" android:scaleGravity="center_vertical|center_horizontal" android:scaleHeight="80%" android:scaleWidth="80%" />
SEE ALSO:
ScaleDrawable
Shape Drawable
This is a generic shape defined in XML.FILE LOCATION:
res/drawable/filename.xml
The filename is used as the resource ID.COMPILED RESOURCE DATATYPE:Resource pointer to a
GradientDrawable.RESOURCE REFERENCE:In Java:
R.drawable.filename
In XML:
@[package:]drawable/filenameSYNTAX:
<?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="float" android:centerY="float" 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>
ELEMENTS:
<shape>The shape drawable. This must be the root element.
attributes:
xmlns:androidString. Required. Defines the XML namespace, which must be
"http://schemas.android.com/apk/res/android".
android:shapeKeyword. Defines the type of shape. Valid values are:
Value | Desciption |
---|---|
"rectangle" | A rectangle that fills the containing View. This is the default shape. |
"oval" | An oval shape that fits the dimensions of the containing View. |
"line" | A horizontal line that spans the width of the containing View. This shape requires the <stroke>element to define the width of the line. |
"ring" | A ring shape. |
android:shape="ring":
android:innerRadiusDimension. The radius for the inner part of the ring (the hole in the middle), as a dimension value or dimension
resource.
android:innerRadiusRatioFloat. The radius for the inner part of the ring, expressed as a ratio of the ring's width. For instance, if
android:innerRadiusRatio="5", then the inner radius equals the ring's width divided
by 5. This value is overridden by
android:innerRadius. Default value is 9.
android:thicknessDimension. The thickness of the ring, as a dimension value or dimension
resource.
android:thicknessRatioFloat. The thickness of the ring, expressed as a ratio of the ring's width. For instance, if
android:thicknessRatio="2", then the thickness equals the ring's width divided by 2. This value
is overridden by
android:innerRadius. Default value is 3.
android:useLevelBoolean. "true" if this is used as a
LevelListDrawable.
This should normally be "false" or your shape may not appear.
<corners>Creates rounded corners for the shape. Applies only when the shape is a rectangle.
attributes:
android:radiusDimension. The radius for all corners, as a dimension value or dimension
resource. This is overridden for each corner by the following attributes.
android:topLeftRadiusDimension. The radius for the top-left corner, as a dimension value or dimension
resource.
android:topRightRadiusDimension. The radius for the top-right corner, as a dimension value or dimension
resource.
android:bottomLeftRadiusDimension. The radius for the bottom-left corner, as a dimension value or dimension
resource.
android:bottomRightRadiusDimension. The radius for the bottom-right corner, as a dimension value or dimension
resource.
Note: Every corner must (initially) be provided a corner radius greater than 1, or else no corners are rounded. If you want specific corners to not be rounded, a work-around is to use
android:radiusto set a default
corner radius greater than 1, but then override each and every corner with the values you really want, providing zero ("0dp") where you don't want rounded corners.
<gradient>Specifies a gradient color for the shape.
attributes:
android:angleInteger. The angle for the gradient, in degrees. 0 is left to right, 90 is bottom to top. It must be a multiple of 45. Default is 0.
android:centerXFloat. The relative X-position for the center of the gradient (0 - 1.0).
android:centerYFloat. The relative Y-position for the center of the gradient (0 - 1.0).
android:centerColorColor. Optional color that comes between the start and end colors, as a hexadecimal value or color
resource.
android:endColorColor. The ending color, as a hexadecimal value or color
resource.
android:gradientRadiusFloat. The radius for the gradient. Only applied when
android:type="radial".
android:startColorColor. The starting color, as a hexadecimal value or color
resource.
android:typeKeyword. The type of gradient pattern to apply. Valid values are:
Value | Description |
---|---|
"linear" | A linear gradient. This is the default. |
"radial" | A radial gradient. The start color is the center color. |
"sweep" | A sweeping line gradient. |
android:useLevelBoolean. "true" if this is used as a
LevelListDrawable.
<padding>Padding to apply to the containing View element (this pads the position of the View content, not the shape).
attributes:
android:leftDimension. Left padding, as a dimension value or dimension
resource.
android:topDimension. Top padding, as a dimension value or dimension
resource.
android:rightDimension. Right padding, as a dimension value or dimension
resource.
android:bottomDimension. Bottom padding, as a dimension value or dimension
resource.
<size>The size of the shape.
attributes:
android:heightDimension. The height of the shape, as a dimension value or dimension
resource.
android:widthDimension. The width of the shape, as a dimension value or dimension
resource.
Note: The shape scales to the size of the container View proportionate to the dimensions defined here, by default. When you use the shape in an
ImageView,
you can restrict scaling by setting the
android:scaleTypeto
"center".
<solid>A solid color to fill the shape.
attributes:
android:colorColor. The color to apply to the shape, as a hexadecimal value or color
resource.
<stroke>A stroke line for the shape.
attributes:
android:widthDimension. The thickness of the line, as a dimension value or dimension
resource.
android:colorColor. The color of the line, as a hexadecimal value or color
resource.
android:dashGapDimension. The distance between line dashes, as a dimension value or dimension
resource. Only valid if
android:dashWidthis set.
android:dashWidthDimension. The size of each dash line, as a dimension value or dimension
resource. Only valid if
android:dashGapis set.
EXAMPLE:XML file saved at
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>
This layout XML applies the shape drawable to a View:
<TextView android:background="@drawable/gradient_box" android:layout_height="wrap_content" android:layout_width="wrap_content" />
This application code gets the shape drawable and applies it to a View:
Resources res = [code]getResources();
Drawable shape = res.
getDrawable(R.drawable.gradient_box);
TextView tv = (TextView)findViewByID(R.id.textview);
tv.setBackground(shape);[/code]
SEE ALSO:
ShapeDrawable
相关文章推荐
- Android6.0系统获getMacAddress()取Wifi和蓝牙Mac地址返回02:00:00:00:00:00解决办法
- [Android5.1]ContentProvider的Binder通信分析
- Android源代码分析--Preference之自动通话录音
- Android.util.Log 关于Android开发中打印log
- php判断网页 是否是 Android webview加载
- 简单的底部标签开源项目:BottomBar
- 十篇安卓文章,都挺不错的
- Android规范摘记
- Android 自定义圆形文字头像
- 史上最快的Android多渠道打包方案
- Android 界面开发颜色整理
- Android studio 设置
- 【开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位网友补充完善
- 关于Android的内存泄露的笔记
- Android保持屏幕常亮的方法
- android activity跳转
- Android资源配置arrays.xml的适配器Adapter
- Android 多线程-----AsyncTask详解
- Android 2048小游戏开发
- android 图片选择器