没有合适的资源?快使用搜索试试~ 我知道了~
首页2、Android项目的目录结构和程序的执行流程.doc
2、Android项目的目录结构和程序的执行流程.doc

Android项目的目录结构和程序的执行流程 Android项目的目录结构和程序的执行流程
资源详情
资源评论
资源推荐

【二、Android 项目的目录结构和程序的执行流程】
二、Android 项目的目录结构和程序的执行流程】
上一次讨论了开发环境的搭建,并写了一个简单的 HelloWorld 测试程序,今天我们通
过分析 HelloWorld 这个项目,来了解一下 Android 项目的目录结构和程序的执行流程
1 Android 项目的目录结构
1.1 目录结构概述
下图是 HelloWorld 应用在 Eclipse 中的目录层次结构
下面我们对每个目录及其文件进行介绍:
项目的根下有以下文件(夹):

src/ 专门存放我们编写的 java 源代码的包。
android 2.1/ 存放 Android 自身的 jar 包。
gen/ 该目录不用我们开发人员维护,但又非常重要的目录。该目录用
来存放由 Android 开发工具所生成的目录。该目录下的所有文件都不是我们创建的,而是由
ADT 自动生成的。该目录下的 R.java 文件非常重要,后面会详细的介绍。
assets/ 该目录用来存放应用中用到的类似于视频文件、MP3 一些媒体文件。
res/ res 是 resource 的缩写。我们称该目录为资源目录。该目录可以存
放一些图标、界面文件、应用中用到的文字信息。
AndroidManifest.xml 该文件是功能清单文件,该文件列出了应用中所使用的所有组
件,如“activity”,以及后面要学习的广播接收者、服务等组件。后面会详细介绍。
default.properties 该文件一般也不需要手工去更改。该文件存放了项目对应的一些
环境配置,如应用要求运行的最低 Android 版本。
其中,资源是 Android 应用程序不可或缺的部分。资源是你想包含和引入到应用程序里
面的一些外部元素,比如图片、音频、视频、文本字符串、布局、主题等。每个 Android 应
用程序包含一个资源目录(res/)和资产目录(assets/),但资产不经常被使用,因为它们的
应用很少。仅在需要读取原始字节流时才需要保存数据在 assets/目录。Res/和 assets/ 目录均
在 Android 项目树的顶端,和源代码目录(src/)处在同一级上。资源和资产从表面上看没
多大区别,不过总体上,在存储外部内容时资源用得更多。真正的区别在于任何放置在资源
目录里的内容可以通过您的应用程序的 R 类访问,这是被 Android 编译过的。而任何存放在
资产目录里的内容会保持它的原始文件格式,为了读取它,你必须使用 AssetManager 来以字
节流的方式读取文件。所以保持文件和数据在资源中(res/)中会更方便访问。
资源被编译到最终的 APK 文件里。Android 创建了一个被称为 R 的类 ,这样你在 Java
代码中可以通过它关联到对应的资源文件。R 类包含的子类的命名由资源在 res/目录下的文
件夹名称所决定。
res/目录下可以有以下几个子目录,部分目录(文件)开发工具并没有自动创建,根据
需要我们可以自行创建,介绍如下表。
关于 res/子目录的一些补充说明:
1. 【res/drawable】
res/目录下有三个 dawable 文件夹——【drawable-*dpi】,区别只是将图标按分辨率高
低来放入不同的目录,【drawable-hdpi】用来存放高分辨率的图标,【drawable-mdpi】用来
存放中等分辨率的图标,【drawable-ldpi】用来存放低分辨率的图标。程序运行时可以根据
手机分辨率的高低选取相应目录下的图标。不过,如果不想准备过多图片,那么也可以只准

备一张图标将其放入三个目录的任何一个中去。
2. 【res/values/】文件夹下常放的文件如下:
1) strings.xml
用来定义字符串和数值,在 Activity 中使用 getResources().getString(resourceId) 或
getResources().getText(resourceId)取得资源。在 Eclipse 中对 res/values 下的文件左键双击或右
键单击后选择【Open With】.. 【Android Resource Editor】编辑 器打开。默 认是【
Resources】显示 ,点击旁边 的 【strings.xml】,显示代码内容。如图。
HelloWorld 项目的 strings.xml 文件内容如下:
1. <?xml version= "1.0" encoding= "utf-8"?>
2. <resources>

3. <string name= "hello">Hello World, HelloActivity!</string>
4. <string name= "app_name"> Android,你好!</string>
5. </resources>
复制代码
每个 string 标签声明了一个字符串,name 属性指定其引用名。
为什么需要把应用中出现的文字单独存放在 strings.xml 文中呢?
原因有二,一是为了国际化,Android 建议将在屏幕上显示的文字定义在 strings.xml
中,如果今后需要进行国际化,比如我们开发的应用本来是面向国内用户的,当然要在屏幕
上使用中文,而如今我们要让应用走向世界,打入日本市场,当然需要在手机屏幕上显示日
语,如果没有把文字信息定义在 strings.xml 中,就需要修改程序内容了。但当我们把所有屏
幕 上 出 现 的 文 字 信 息 都 集 中 存 放 在 strings.xml 文 件 之 后 , 只 需 要 再 提 供 一 个
strings.xml 文件,把里面的汉字信息都修改为日语,再运行程序时,Android 操作系统会根
据用户手机的语言环境和国家来自动选择相应的 strings.xml 文件,这时手机界面就会显示出
日语。这样做国际化非常的方便。
二是为了减少应用的体积,降低数据冗余。假设在应用中要使用“我们一直在努力”这段
文字 10000 次,如果我们不将“我们一直在努力”定义在 strings.xml 文件中,而是在每次使用
时直接写上这几个字,这样下来程序中将有 70000 个字,这 70000 个字占 136KB 的空间。
而由于手机的资源有限,其 CPU 的处理能力及内存是非常有限的,136KB 对手机程序来说
是个不小的空间,我们在做手机应用是一定要记住“能省内存就省内存”。而如果将这几个字
定义在 strings.xml 中,在每次使用到的地方通过 Resources 类来引用该文字,只占用了
14B,因此对降低应用体积效果是非常有效地。当然我们可能在开发时可能并不会用到这么
多的文字信息,但是“不以善小而不为,不以恶小而为之”,作为手机应用开发人员,我们一
定要养成良好的编程习惯。
2) arrays.xml
用来定义数组,在 Activity 中使用 getResources().getStringArray(resourceId)获
取一个 String 数组。
示例代码如下:
1. <?xml version="1.0" encoding="utf-8"?>
2. <resources>
3. <string-array name="sports">
4. <item>足球</item>
5. <item>篮球</item>
6. <item>太极</item>
7. <item>乒乓球</item>
8. </string-array>
剩余19页未读,继续阅读











安全验证
文档复制为VIP权益,开通VIP直接复制

评论2