文档章节

Android 资源文件介绍

 的书法上的
发布于 2014/05/05 12:27
字数 1153
阅读 14
收藏 0

Android应用程序中的资源

      任何类型的程序都需要使用资源,Android应用程序也不例外。Android应用程序使用的资源有很多都被封装在apk文件中,并随apk文件一起发布。本节将介绍这些资源如何封装在apk文件中,以及使用这些资源的基本方法。


       资源存放在哪里

       既然要将资源封装在apk文件中,那么这些资源一定是放在Eclipse工程的某处。在第2章实现的应用程序中可以看到,在Eclipse工程中有一个res目录。在该目录下有3个子目录:drawable、layout、values。这3个子目录中分别包含icons.png、main.xml和strings.xml。从drawable目录中包含icons.png文件这一点可以初步断定,这个目录是用来保存图像文件的。而layout目录从名字可以看出,该目录是用来保存布局文件的。通过打开values目录中的strings.xml文件可以看出,在strings.xml文件中都是基于XML格式的key-value对,因此,也可以断定values目录是用来保存字符串资源的。实际上,在Android应用程序中还可以包含除这3种资源外的更多资源。下一节将介绍Android应用程序中可以包含的资源。

       资源的种类

       Android支持3种类型的资源:XML文件、图像以及任意类型的资源(例如,音频、视频文件)。这些资源文件分别放在res目录的不同子目录中。在编译Android应用程序的同时,系统会使用一个资源文件编译程序(aapt)对这些资源文件进行编译。表3.1是Android支持的资源列表。

效果图:


       资源的基本使用方法


       Android会为每一种资源在R类中生成一个唯一的ID,这个ID是int类型的值。在一般情况下,开发人员并不需要管这个类,更不需要修改这个类,只需要直接使用R类中的ID即可。为了更好地理解使用资源的过程。

Java代码:

  1. package net.blogjava.mobile; 

  2. public final class R { 

  3. public static final class attr { 

  4. } 

  5. public static final class drawable { 

  6. public static final int icon=0x7f020000; 

  7. } 

  8. public static final class id { 

  9. public static final int btnShowDate=0x7f050000; 

  10. public static final int btnShowTime=0x7f050001; 

  11. } 

  12. public static final class layout { 

  13. public static final int main=0x7f030000; 

  14. } 

  15. public static final class string { 

  16. public static final int app_name=0x7f040001; 

  17. public static final int hello=0x7f040000; 

  18. } 

  19. }


  20.         从R类中很容易看出,ADT为res目录中每一个子目录或标签(例如,<string>标签)都生成了一个静态的子类,不仅如此,还为XML布局文件中的每一个指定id属性的组件生成了唯一的ID,并封装在id子类中。这就意味着在Android应用程序中可以通过ID使用这些组件。

           R类虽然也属于net.blogjava.mobile包,但在Eclipse工程中为了将R类与其他的Java类区分开,将R类放在gen目录中。
           既可以在程序中引用资源,也可以在XML文件中引用资源。例如,在应用程序中获得btnShowDate按钮对象的代码如下:

    Java代码:

  21. Button btnShowDate = (Button) findViewById(R.id.btnShowDate);


       可以看到,在使用资源时直接引用了R.id.btnShowDate这个ID值,当然,直接使用0x7f050000也可以,不过为了使程序更容易维护,一般会直接使用在R的内嵌类中定义的变量名。

       Android SDK中的很多方法都支持直接使用ID值来引用资源。例如,android.app.Activity类的setTitle方法除了支持以字符串方式设置Activity的标题外,还支持以字符串资源ID的方式设置Activity的标签。例如,下面的代码使用字符串资源重新设置了Activity的标题。

Java代码:

  1. setTitle(R.string.hello);


       除了可以使用Java代码来访问资源外,在XML文件中也可以使用这些资源。例如,引用图像资源可以使用如下格式:

Java代码:

  1. @drawable/icon


       其中icon就是res\drawable目录中的一个图像文件的文件名。这个图像文件可以是任何Android支持的图像类型,例如,gif、jpg等。因此,在drawable目录中不能存在同名的图像文件,例如,icon.gif和icon.jpg不能同时放在drawable目录中,这是因为在生成资源ID时并没有考虑文件的扩展名,所以会在同一个类中生成两个同名的变量,从而造成Java编译器无法成功编译R.java文件。

本文转载自:http://www.eoeandroid.com/thread-74898-1-1.html

共有 人打赏支持
粉丝 5
博文 72
码字总数 58940
作品 0
东城
私信 提问
基于Android平台的多分辨率解决方案[图]

摘要:近年来,智能手机的功能越来越强大,移动终端应用程序层出不穷,移动互联网改变人们的生活。Android系统是开放手机联盟推出的一款开源的手机操作系统,正是由于其开放性,没有采用Windows P...

笨笨熊的徒弟
2012/11/12
0
0
[Android]Android开发入门之HelloWorld

引言: 在做Unity开发的时候,发现这么个问题,虽然Unity是跨平台的,能够进行Android,IOS,Web,PC等开发,但如果要实现一些稍微系统 层的东西,还是需要通过通信,调用原系统的接口(自定义...

丁小未
2014/04/08
0
0
SimpleNews 项目的重构之旅(4) -Gradle for Android 基础知识汇总

Gradle 使用 Android Studio 都知道 Gradle,在 SimpleNews 项目中,前期的时候并不是很了解 Gradle 语法等,只是使用 Android Studio 默认的配置来构建,后续也只是关注在功能方向,没有过多...

無名小子的杂货铺
2017/06/03
0
0
Android开发优化之——对界面UI的优化(1)

在Android应用开发过程中,屏幕上控件的布局代码和程序的逻辑代码通常是分开的。界面的布局代码是放在一个独立的xml文件中的,这个文件里面是树型组织的,控制着页面的布局。通常,在这个页面...

KingMing
2015/04/03
0
0
用IntelliJ IDEA开发Android程序

介绍: IntelliJ IDEA支持开发运行在移动手机上的应用程序,所以也能在Android操作系统下运行。出来一般的代码提示助手功能之外,这个IDE也是你能够通过配置模拟器设备测试Android程序。 In...

郑华勇
2012/06/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

(三)Honghu Cloud云架构一定时调度平台

2018-11-16 14:45:08 产品简介 鸿鹄云架构是一个完全由Java编写的开源任务调度框架,为企业在任务调度提供了简单却强大的机制。开发人员根据业务规则,使用调度平台简单配置,就可以让任务在...

itcloud
28分钟前
2
0
护航Lazada双11购物节 阿里云CDN全球化火力全开

摘要: Lazada是东南亚最大B2C平台,业务范围覆盖印度尼西亚、马来西亚、菲律宾、新加坡、泰国和越南六个东南亚国家,覆盖大约6亿消费者。在双11期间,阿里云CDN为Lazada电商内容加速,并且通...

阿里云官方博客
28分钟前
2
0
常用设计模式之代理模式解析

1. 简介 代理模式(Proxy Pattern)是常用设计模式之一。代理模式的定义:Provide a surrogate or placeholder for another object to controlaccess to it(为其他对象提供一种代理以控制对这个...

老道士
28分钟前
5
0
Vue瀑布流插件的使用示例

我自己写的一个的Vue瀑布流插件,列数自适应,不用设置每个卡片的高度。 测试页面:Page.vue 模板页面:WaterFollow.vue 和 WFColumn.vue 在Page.vue中,修改itemW的值,设置每列的最小宽度。...

peakedness丶
29分钟前
4
0
多种负载均衡算法及其Java代码实现【网络上较好的转载】

首先给大家介绍下什么是负载均衡(来自百科) 负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展 网络设备和 服务器的带宽、增加 吞吐量、加强网络数据处理能力、提高网...

stys352
33分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部