随着保存在RES /绘制/ myimage.png的图像,这种布局XML应用图像视图:
<ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/myimage" />下面的应用程序代码检索图像作为绘制对象:
Resources res =也可以看看:getResources()
; Drawable drawable = res.getDrawable
(R.drawable.myimage);
<?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:
关键词。定义该位图的严重性。重力表示,其中以定位可绘在其容器如果位图是比容器更小。
必须是一个或多个(由分隔'|')以下的恒定值:
Value | Description |
---|---|
top |
放对象在其容器的顶部,不改变其大小。 |
bottom |
放对象在其容器的底部,不改变其大小 |
left |
其容器的z左边,不改放对象在变其大小 |
right |
其容器的z右边,不改放对象在变其大小 |
center_vertical |
放置在其容器的垂直中心对象,不改变其大小。 |
fill_vertical |
如果需要的话,以便完全填满其容器生长的物体的垂直尺寸。 |
center_horizontal |
放置在其容器的水平中心对象,不改变其大小 |
fill_horizontal |
如果需要的话,以便完全填满其容器生长的物体的水平尺寸。 |
center |
放置在其容器中的垂直和水平轴两个中心的对象,不改变其大小。 |
fill |
如果需要的话,以便完全填满其容器成长对象的水平和垂直尺寸。这是默认的。 |
clip_vertical |
可以设置附加的选项,使顶部和/或儿童的底部边缘夹在其容器边界。夹子基于垂直重力:顶部重力夹子的底部边缘,一个底重力夹子的顶部边缘,并且既不剪辑两边缘。 |
clip_horizontal |
可以设置附加的选项,使左和/或儿童的右边缘夹在其容器边界。夹子基于水平比重:左重力剪辑的右边缘,右重力夹子的左边缘,并且既不剪辑两边缘。 |
Value | Description |
---|---|
disabled |
不平铺的位图。这是默认值。 |
clamp |
复制边缘颜色,如果着色器绘制其原有的边界外 |
repeat |
水平和垂直方向重复着色器的图像。 |
mirror |
重复渲染图像的水平水平和垂直方向重复着色器的图像.ly和垂直方向上,交替镜像,使相邻图像总是缝。 |
<?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/icon" android:tileMode="repeat" />也可以看看:
<Button android:layout_height="wrap_content" android:layout_width="wrap_content" android:background="@drawable/myninepatch" />也可以看看:
<?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"] />内容:
<?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" />层列表
?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:
<item android:drawable="@drawable/image" />为了避免结垢,下面的示例使用 <bitmap>元素为中心的比重:
<item> <bitmap android:src="@drawable/image" android:gravity="center" /> </item>例:
<?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>请注意,此示例使用嵌套的<位图>元素与“中心”重力定义每个项目的绘制资源。这确保了没有图像被缩放到适合容器的大小,由于由偏移的图像调整大小而引起的。
<ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/layers" />结果是日益偏移图像的堆栈:
也可以看看:
LayerDrawable
国家名单
一个StateListDrawable是使用几种不同的图像来表示相同的图形,根据对象的状态中的XML定义的可绘制的对象。例如,一个按钮控件可以在几种不同的状态(压,突出重点,或两者都不是),并使用状态列表绘制的一个存在,你可以为每个国家不同的背景图片。
你可以这样描述XML文件的状态列表。每个图形由单个<选择>元素中的<item>元素表示。每个<item>使用不同的属性来描述,其中它应该被用来作为图形为可绘制的状态。
在每个状态变化,所述状态列表遍历从上到下和相匹配的当前状态下使用,该选择并非基于所述的第一项“最佳匹配”,而仅仅是一个满足该状态的最低标准的第一项。
文件位置:
RES /绘制/ filename.xml中
文件名被用作资源ID。
编译的资源数据类型:
资源指针StateListDrawable。
资源引用:
在Java:R.drawable.filename
在XML:@ [包:]绘制/文件名
句法:
<?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:
布尔。 “真”,如果当按下对象应使用此产品的(当按钮被触摸诸如/点击); “假”,如果这个项目应该在默认使用,非按下状态。
android:state_focused
布尔。 “真”如果这个项目时,应使用对象具有输入焦点(当用户选择一个文本输入等); “假”,如果这个项目应该在默认使用,非聚焦状态。
android:state_hovered
布尔。 “真”,如果当物体被由光标悬停应该使用这个产品“假”,如果这个项目应该在默认使用,非悬停状态。通常,这可拉伸可以是用于“聚焦”状态的相同可拉伸。
介绍了API级别14。
android:state_selected
布尔。 “真”,如果当物体是用方向控制导航时(例如通过与一个d-垫列表导航时)当前用户选择这个项目应该使用; “假”如果在没有选择的对象应使用此项目。
选择状态时,使用对焦(安卓state_focused)是不够的(例如,当列表视图具有焦点,并在其中一个项目中选择了D-PAD)。
android:state_checkable
布尔。 “真”,如果当对象是可勾选应该使用这个产品, “假”,如果当对象不是可勾选此项目应该被使用。 (只有有用的,如果该对象可以可检查的和非可检查的小部件之间转换。)
android:state_checked
布尔。 “真”,如果当对象被选中应该使用这个产品, “假”,如果它应当对象是使用未检查。
android:state_enabled
布尔。 “真”,如果当物体被启用应使用此产品的(能够接收触摸/点击事件); “假”,如果当物体被禁用它应该被使用。
android:state_activated
布尔。 “真”,如果当对象被激活为持久的选择应该使用这个项目(如“亮点”以前选择列表中一个持久的导航视图的项目); “假”,如果当物体不激活它应该被使用。
介绍了API级别11。
android:state_window_focused
布尔。 “真”,如果当应用程序窗口已关注这个项目应该使用(应用程序是在前台),“假”,如果这个项目时,应使用应用程序窗口没有焦点(例如,如果通知栏是拉下来,或者出现一个对话框)。
注意:请记住,在Android的匹配对象的当前状态的状态列表适用中的第一项。因此,如果在该列表中的第一项包含任何状态的上述属性,那么它被施加每一次,这就是为什么预设值应始终是最后(如下面的示例所示)。
例:
在保存RES /绘制/ button.xml 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>这种布局XML应用状态列表绘制到按钮:
<Button android:layout_height="wrap_content" android:layout_width="wrap_content" android:background="@drawable/button" />也可以看看:
<?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>android:insetLeft
<?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>
<?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:
<?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>这种布局XML应用形状绘制到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);也可以看看:
<?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:
<?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" />也可以看看:
<?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:
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" />以下代码获取被拉伸并增加以便剪裁逐步显示图像的量:
ImageView imageview = (ImageView) findViewById(R.id.image); ClipDrawable drawable = (ClipDrawable) imageview.getDrawable(); drawable.setLevel(drawable.getLevel() + 1000);增加水平降低削波的量和慢慢揭示了图像。这是在7000的水平:
注意:默认级别为0,这是完全修剪,因此图像是不可见的。当电平是10,000时,图像不裁剪和完全可见。
也可以看看:
ClipDrawable
Scaledrawable
在XML改变基于当前水平的另一个绘制的大小定义的绘制。
文件位置:
RES /绘制/ filename.xml中
文件名被用作资源ID。
编译的资源数据类型:
资源指针ScaleDrawable。
资源引用:
在Java:R.drawable.filename
在XML:@ [包:]绘制/文件名
句法:
<?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:
串。需要。定义了XML命名空间,它必须是“http://schemas.android.com/apk/res/android”。
android:drawable
绘制资源。需要。参照绘制资源。
android:scaleGravity
关键词。指定缩放后的重心位置。
必须是一个或多个(由分隔'|')以下的恒定值:
值说明
top把对象在其容器的顶部,不改变其大小。
bottom把对象在其容器的底部,不改变其大小。
left对象在其容器的左边缘,不改变其大小。这是默认的。
right把对象在其容器的右边缘,不改变其大小。
center_verticalcenter_vertical地点对象,不改变其大小。
fill_vertical 如果需要的话,以便完全填满其容器fill_vertical成长的对象的垂直尺寸。
center_horizontal在它的容器的水平中心CENTER_HORIZONTAL地点对象,不改变其大小。
fill_horizontal如果需要的话,以便完全填满其容器fill_horizontal成长的对象的水平大小。
center中心放置在其容器的同时在垂直和水平轴,不改变其尺寸的中心的对象。
fill 填充,如果需要,以便完全填满其容器成长的对象的水平和垂直尺寸。
clip_vertical可以设置clip_vertical附加选项,使顶部和/或儿童的底部边缘夹在其容器的边界。夹子基于垂直重力:顶部重力夹子的底部边缘,一个clip_horizontal底重力夹子的顶部边缘,并且既不剪辑两边缘。
可以设置clip_horizontal附加选项,使左和/或儿童的右边缘夹在其容器的边界。夹子基于水平比重:左重力剪辑的右边缘,右重力夹子的左边缘,并且既不剪辑两边缘。
android:scaleHeight
百分比。规模高度,表示为可绘制的结合的百分比。该值的格式为XX%。例如:100%,12.5%等
android:scaleWidth
百分比。刻度宽度,表示为可绘制的结合的百分比。该值的格式为XX%。例如:100%,12.5%等
例:
<?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%" />也可以看看:
<?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>ELEMENTS::
android:shape="ring"
:
<?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应用形状绘制到View:
<TextView android:background="@drawable/gradient_box" android:layout_height="wrap_content" android:layout_width="wrap_content" />
此应用程序代码获取形状绘制,并将其应用于一个观点
Resources res =getResources()
; Drawable shape = res.getDrawable
(R.drawable.gradient_box); TextView tv = (TextView)findViewByID(R.id.textview); tv.setBackground(shape);