Android应用资源---绘制资源类型(Drawable)(二)

翻译 2012年04月22日 11:07:20

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图形的相关文档。

http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch

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对象的背景:

<Button
   
android:layout_height="wrap_content"
   
android:layout_width="wrap_content"
   
android:background="@drawable/myninepatch"/>

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"?>
<nine-patch
   
xmlns:android="http://schemas.android.com/apk/res/android"
   
android:src="@[package:]drawable/drawable_resource"
   
android:dither=["true" |"false"] />

 

元素(ELEMENTS):

<nine-patch>

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

     属性(ATTRIBUTES):

         xmlns:android

        字符串值,必须的,它定义了XML的命名空间,必须是:http://schemas.android.com/apk/res/android

         android:src

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

         android:dither

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

例子(EXAMPLE):

<?xml version="1.0" encoding="utf-8"?>
<nine-patchxmlns:android="http://schemas.android.com/apk/res/android"
   
android:src="@drawable/myninepatch"
   
android:dither="false"/>

层列表

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

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

文件位置(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"?>
<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>

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

       属性(ATTRIBUTES):

        xmlns:android

       字符串值,必须的,它定义了XML的命名空间,必须是:http://schemas.android.com/apk/res/android

    <item>

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

    属性(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对象的尺寸的增长,并且某些图片也做相应的缩放。要避免列表中的项目被缩放,就要在<item>元素内部使用<bitmap>元素来指定绘制资源,并且资源不缩放的重心,如“center”。如,下面的<item>元素定义了一个能够适应容器View缩放的绘制项目:

<itemandroid:drawable="@drawable/image"/>

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

<item>
 
<bitmapandroid:src="@drawable/image"
         
android:gravity="center"/>
</item>

例子(EXAMPLE):

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

<?xml version="1.0" encoding="utf-8"?>
<layer-listxmlns:android="http://schemas.android.com/apk/res/android">
   
<item>
     
<bitmapandroid:src="@drawable/android_red"
       
android:gravity="center"/>
   
</item>
   
<itemandroid:top="10dp"android:left="10dp">
     
<bitmapandroid:src="@drawable/android_green"
       
android:gravity="center"/>
   
</item>
   
<itemandroid:top="20dp"android:left="20dp">
     
<bitmapandroid:src="@drawable/android_blue"
       
android:gravity="center"/>
   
</item>
</layer-list>

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

<ImageView
   
android:layout_height="wrap_content"
   
android:layout_width="wrap_content"
   
android:src="@drawable/layers"/>

下图是绘制结果:

Android应用资源---绘制资源类型(Drawable)(一)

可绘制资源是指能够被绘制到屏幕上的图形的一般化概念,并且能够用诸如getDrawable(int)等API方法来获取这些资源,或者使用诸如android:drawable和android:icon属性...
  • longzhongren
  • longzhongren
  • 2014年05月05日 13:04
  • 453

PHP中的资源类型

在PHP中,我们经常使用到资源类型变量。例如:mysql连接、文件句柄等。 这些变量无法使用标量来表示,那么在Zend内核中是如何将PHP中的资源变量与C语言中的资源衔接的呢? 一、资源变量...
  • woshinannan741
  • woshinannan741
  • 2016年01月14日 10:28
  • 2646

php变量类型之资源变量

php resource 资源类型 资源类型是一种特殊的变量,保存了到外部资源的一个引用。资源是通过专门的函数来建立和使用的。 比如数据库连接,打开文件,图形画布区域等。资源类型其实仅仅是一个整数,而...
  • masbwylc
  • masbwylc
  • 2013年11月01日 10:48
  • 617

Canvas和Drawable 绘制组件

将博客搬至CSDN
  • snowgeneral
  • snowgeneral
  • 2014年10月23日 11:28
  • 1991

VC++ 导入自定义资源

在VC中使用自定义资源,FindResource,LoadResource 一、添加 添加资源时选择自定义,IDE会为你生成一个新的二进制资源,然后你就可以将你已经存在的二进制文件作为自定...
  • Howard_Liu1314
  • Howard_Liu1314
  • 2014年03月07日 21:59
  • 3495

Android的资源类型之Drawable

Drawable资源概述: 一种可以通过getDrawable(int)方法获取到的,或者可以通过android:drawable和android:icon属性应用到XML文件的资源。个人理解,可以转...
  • gongsunjinqian
  • gongsunjinqian
  • 2016年07月13日 18:17
  • 697

Android资源之Drawable介绍(一)

在Android开发中,资源文件是我们最熟悉和最需要的重要部分。Drawable作为资源的一种,更是项目中必备的资源。 Android中的Drawable资源有很多种,诸如LayerDrawable...
  • true100
  • true100
  • 2016年08月25日 17:11
  • 1588

Drawable资源——Scale Drawable 规模可绘制

ScaleDrawable:它可以根据自己的等级(level)将指定的Drawable缩放到一定比例。...
  • reflse
  • reflse
  • 2016年05月03日 14:32
  • 712

VC中使用自定义资源

一、前言   在VC环境中除了我们所常用的Dialog、Menu和Bitmap等标准资源类型之外,它还支持自定义资源类型(Custom Resource),我们自定义资源类型能做些什么呢?呵呵,用处...
  • tianshi_1988
  • tianshi_1988
  • 2016年04月08日 12:15
  • 736

android中drawable资源的解释及例子

文章中的内容参考Dev Guide中的Drawable Resources,英文好的朋友可以直接去读英文。总结这篇文章的目的是自己在使用drawable资源遇到一些问题跟大家分享下,同时整理下自己对d...
  • wode_dream
  • wode_dream
  • 2014年08月15日 14:25
  • 6454
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android应用资源---绘制资源类型(Drawable)(二)
举报原因:
原因补充:

(最多只允许输入30个字)