万书网 > 文学作品 > Android从入门到精通 > 第85页

第85页



说明:  Drawable资源通常保存在res\drawable目录中,实际上是保存在res\drawable-hdpi、res\drawable-ldpi、res\drawable-mdpi目录下。其中,res\drawable-hdpi保存的是高分辨率的图片;res\drawable-ldpi保存的是低分辨率的图片;res\drawable-mdpi保存的是中等分辨率的图片。

8.6.1 图片资源

在Android中,不仅可以将扩展名为.png、.jpg和.gif的普通图片作为图片资源,而且可以将扩展名为.9.png的9-Patch图片作为图片资源。扩展名为.png、.jpg和.gif的普通图片较常见,它们通常是通过绘图软件完成的,下面来对扩展名为.9.png的9-Patch图片进行简要介绍。

9-Patch图片是使用Android  SDK中提供的工具Draw  9-patch生成的,该工具位于Android  SDK安装目录下的tools目录中,双击draw9patch.bat即可打开该工具。使用该工具可以生成一个可以伸缩的标准PNG图像,Android会自动调整大小来容纳显示的内容。通过Draw  9-patch生成扩展名为.9.png的图片的具体步骤如下。

(1)打开Draw  9-patch,选择工具栏中的File/Open  9-patch命令,如图8.3所示。



图8.3 启动Draw  9-patch工具

(2)在打开的“打开”对话框中,选择要生成9-Patch图片的原始图片,这里选择名称为mrbiao.png的图片。打开后的效果如图8.4所示。



图8.4 打开原始图片

说明:  在图片的四周多了一圈一个像素的可操作区域,在该可操作区域上单击,可以绘制一个像素的黑线,水平方向黑线与垂直方向黑线的交集为可缩放区域,在已经绘制的黑线上单击鼠标右键(或者按下Shift键后单击),可以清除已经绘制的内容。

(3)在打开的图片上定义如图8.5所示的可缩放区域和内容显示区域。



图8.5 定义9-Patch图片

(4)选择菜单栏中的File/Save  9-patch命令,保存9-Patch图片,这里将其命名为mrbiao.9.png。

(5)生成扩展名为.9.png的图片后,就可以将其作为图片资源使用了。9-Patch图片通常用作背景。与普通图片不同的是,使用9-Patch图片作为屏幕或按钮的背景时,当屏幕尺寸或者按钮大小改变时,图片可自动缩放,达到不失真效果。如图8.6所示就是在模拟器中使用9-Patch图片和普通PNG图像作为按钮背景时的效果。



图8.6 普通PNG图片与9-Patch图片的对比

在了解了可以作为图片资源的图像后,下面来介绍如何使用图片资源。在使用图片资源时,首先将准备好的图片放置在res\drawable-xxx目录中,然后就可以在Java或XML文件中访问该资源了。在Java代码中,可以通过下面的语法格式访问图片。

[.]R.drawable.<文件名>

注意:  Android中不允许图片资源的文件名中出现大写字母,且不能以数字开头。

例如,在MainActivity中,通过图片资源为ImageView组件设置要显示的图片,可以使用下面的代码:

ImageView  iv=(ImageView)findViewById(R.id.imageView1);



iv.setImageResource(  R.drawable.head  );

在XML文件中,可以通过下面的语法访问图片资源:

@[:]drawable/文件名

例如,在定义ImageView组件时,通过图片资源为其指定android:src属性,也就是设置要显示的图片,具体代码如下:




android:id="@+id/imageView1"



android:layout_width="wrap_content"



android:layout_height="wrap_content"



android:src="@drawable/head"  />

说明:  在Android应用中,使用9-Patch图片时不需要加扩展名.9.png。例如,要在XML文件中使用一个名称为mrbiao.9.png的9-Patch图片,可以使用@drawable/mrbiao。

8.6.2 StateListDrawable资源

StateListDrawable资源是定义在XML文件中的Drawable对象,能根据状态来呈现不同的图像。例如,一个Button组件存在多种不同的状态(pressed、enabled或focused等),使用StateListDrawable资源可以为按钮的每个状态提供不同的按钮图片。

StateListDrawable资源文件同图片资源一样,也是放在res\drawable-xxx目录中。StateListDrawable资源文件的根元素为,在该元素中可以包括多个元素。每个Item元素可以设置以下两个属性。

[√]android:color或android:drawable:用于指定颜色或Drawable资源。



[√]android:state_xxx:用于指定一个特定的状态,常用的状态属性如表8.1所示。

表8.1 StateListDrawable支持的常用状态属性





状态属性  描 述

android:state_active  表示是否处于激活状态,属性值为true或false

android:state_checked  表示是否处于选中状态,属性值为true或false

android:state_enabled  表示是否处于可用状态,属性值为true或false

android:state_first  表示是否处于开始状态,属性值为true或false

android:state_focused  表示是否处于获得焦点状态,属性值为true或false

android:state_last  表示是否处于结束状态,属性值为true或false

android:state_middle  表示是否处于中间状态,属性值为true或false

android:state_pressed  表示是否处于被按下状态,属性值为true或false

android:state_selected  表示是否处于被选择状态,属性值为true或false

android:state_window_focused  表示窗口是否已经得到焦点状态,属性值为true或false

例如,创建一个根据编辑框是否获得焦点来改变文本框内文字颜色的StateListDrawable资源,名称为edittext_focused.xml,可以使用下面的代码: