android资源类型有哪些,Android应用资源---绘制资源类型(Drawable)(二)

Nine-Patch

NinePatch资源是一个PNG图片,在这个图片内能够定义拉伸区域,当在View对象的内容超过了普通图片的边框时,Android会缩放这个拉伸区域。通常,把这种类型的图片作为View对象的背景,这个View对象至少有一个尺寸被设置为”wrap_content”,这样当View对象根据容纳的内容增长时,Nine-Patch图片也会根据View对象的大小被缩放。例如,使用Nine-Patch图片作为Android标准的Button控件的背景,它会根据Button内部容纳的文本来拉伸。

跟普通的位图一样,可以直接引用Nine-Patch文件,也可以从XML中定义的资源中来引用。

关于如何创建带有拉伸区域的Nine-Patch文件的讨论,请看2D图形的相关文档。

Nine-Patch文件

文件位置(FILE LOCATION):

res/drawable/filename.9.png

文件名被用于资源ID。

编译资源的数据类型(COMPILED RESOURCE DATATYPE):

资源指向一个NinePatchDrawable对象。

资源引用(RESOURCE REFERENCE):

在Java代码中:R.drawable.filename

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

例子(EXAMPLE):

以下布局XML中使用了res/drawable/myninepatch.9.png图片,作为一个View对象的背景:

XML Nine-Patch

一个XML Nine-Patch是指定义在XML中的一个资源,这个资源指向一个Nine-Patch文件。XML能够给图片指定补色。

文件位置(FILE LOCATION):

res/drawable/filename.xml

文件名被用作资源的ID。

被编译资源的数据类型(COMPILED RESOURCE DATATYPE):

资源指向一个NinePatchDrawable对象。

资源引用(RESOURCE REFERENCE)

在Java代码中:R.drawable.filename

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

语法(SYNTAX):

<?xml version="1.0"encoding="utf-8"?>xmlns:android="http://schemas.android.com/apk/res/android"android:src="@[package:]drawable/drawable_resource"android:dither=["true"|"false"]/>

元素(ELEMENTS):

定义Nine-Patch资源和它的属性。

属性(ATTRIBUTES):

xmlns:android

android:src

可绘制资源,必须的,它引用了一个Nine-Patch文件。

android:dither

布尔值,如果位图没有跟屏幕配置相同的像素,那么就启用或禁止位图的仿色处理(例如,一个ARGB 8888位图用于RGB 565的屏幕)。

例子(EXAMPLE):

层列表

LayerDrawable是一个绘制资源对象,它管理着一个其他绘制资源的数组。列表中的每个可绘制资源会按照列表中的顺序来绘制---列表中最后的资源会被绘制在最最上面。

每个绘制资源都用一个元素来代表,这些元素都被放在一个单独的元素内部。

文件位置(FILE LOCATION):

res/drawable/filename.xml

文件名被用作资源ID。

被编译资源的数据类型(COMPILED RESOURCE DATATYPE):

资源指向一个LayerDrawable对象。

资源应用(RESOURCE REFERENCE):

在Java代码中:R.drawable.filename

在XML中:@[package:]drawable.filename

语法(SYNTAX):

<?xml version="1.0"encoding="utf-8"?>xmlns:android="http://schemas.android.com/apk/res/android">android:drawable="@[package:]drawable/drawable_resource"android:id="@[+][package:]id/resource_name"android:top="dimension"android:right="dimension"android:bottom="dimension"android:left="dimension"/>

元素(ELEMENTS):

必须的,它必须是根元素,包含了一个或多个元素。

属性(ATTRIBUTES):

xmlns:android

定义一个层中的可绘制资源,其中的一个属性定义了资源的位置。这个可绘制资源必须是元素的一个子元素。元素接受子元素。

属性(ATTRIBUTES):

android:drawable

可以绘制资源,必须的,它指向一个可绘制资源。

android:id

资源ID,针对这个绘制资源的唯一的资源ID。要使用“@+id/name”格式给这个项目创建一个新的资源ID。“+”号指示这个资源应用创建一个新的ID。能够使用这个标识符,通过调用View.fineViewById()或Activity.findViewById()方法来获取和编辑可绘制资源。

android:top

整数值,顶部的偏移像素。

android:right

整数值,右边的偏移像素。

android:bottom

整数值,底部的偏移像素。

android:left

整数值,左边的偏移像素。

默认情况下,所有的可绘制项都会被缩放,以便适应容器View对象的尺寸。因此,把层列表中的图片放到不同的位置,可能会造成View对象的尺寸的增长,并且某些图片也做相应的缩放。要避免列表中的项目被缩放,就要在元素内部使用元素来指定绘制资源,并且资源不缩放的重心,如“center”。如,下面的元素定义了一个能够适应容器View缩放的绘制项目:

要避免缩放,使用下面的方法来重新定义:

例子(EXAMPLE):

XML文件被保存在res/drawable/layers.xml中

要注意是,这个例子使用了嵌套的带有“center”重心的元素来给每个项目定义绘制资源。这样就确保了图片在绘制期间,不会为了适应容器的尺寸而被缩放。

下图是绘制结果:

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值