Android操作系统中开发的应用程序都有一个结构缜密的架构。我们今天就来对这一Android程序架构做一个详细的分析。帮助大家了解程序开发的特点,以方便将来在应用程序开中明确自己的程序架构。

Android程序架构1. src/ 原始码(source)目录

src 目录中包含了一个 Android 应用程式中所需的各个程式码档桉。这些档桉被包在对应 package 的子目录下。(如本章的 BMI 例子中,子目录指的就是 /src/com/demo/android/bmi/)

src 目录中比较关键的程式有:

1. Bmi.java 这个档桉的档名会随着你在建立一个新的程式专桉画面中所填入「Create Activity」栏位值的不同而改变。这是新程式专桉中的主要程式区块。我们开发 Android 程式的多数时间,都是在 src 目录下和 Android 打交道。
gen/ 自动生成(Generate)目录

gen 目录中存放所有自动生成的档桉。

gen 目录中最关键的程式就是 R.java 档。

1. R.java 这个档是自动产生的。会由 ADT 插件自动根据你放入 res 目录的 XML 描述文件、图像等资源,同步更新修改 'R.java' 这个文件中。所有的 Android 程式中都会有以 R.java 为名的这个档桉,你完全不需要,也应避免手工修改 R.java 这个档桉。

R.java 中自动产生的「R」 类别就像是个字典一样,包含了使用者介面、图像、字串等各式的资源与相应的编号(id)。Android 应用程式中很多时候会需要透过 R 类别调用资源。编译时编译器也会查看这个资源列表,没有使用到的资源就不会编译进去,为手机应用程式节省不必要没用的空间。

Android程序架构2. s/ 资源(Resource)目录

「res」 目录中存放所有程式中用到的资源档桉。"资源档桉"指的是资料档桉,或编译时会被转换成程式一部分的 XML 描述档。Android 针对放在「res」 目录下的不同子目录的资源,会有各自不同处理方式。因此我们写程式时,最好能搞清楚各目录下分别可放置的内容。

Android程序架构3. layout/ 版面配置(layout)目录

「layout」目录包含所有使用 XML 格式的介面描述档。「layout」 中的 XML 介面描述档就像写网页时用到的 HTML 档桉一样,用来描述萤幕上的版面编排与使用的介面元件。XML 介面描述档描述的内容可以是整张萤幕,也可以只描述一部分的介面(例如描述用来产生对话框的介面元件)。

虽然你也能直接通过 Java 来建立使用者介面,不过透过 XML 描述档来建立使用者介面相对更简单,架构也更清晰,以后维护时更容易釐清问题。要使用这些介面元件,应透过 「R.java」 档中自动产生的 「R」 类别来调用。

Android程序架构4. values/ 参数值(value)目录

「values」 目录包含所有使用 XML 格式的参数值描述档,可以在此添加一些额外的资源如字串(很常用)、颜色、风格等。使用时也是透过 「R」 类别来调用。
Android 功能清单

Android程序架构5. AndroidManifest.xml

「AndroidManifest.xml」 是 Android 程式的功能清单,应用程式在这离列出该工程所提供的功能。当应用程式开启时,会提供诸如内容提供者(ContentProvider)、处理的资料类型、实际运行的类别、跨应用程式的资讯等等讯息。你可以在此指定你的应用程式会使用到的服务(诸如电话功能、网路功能、GPS功能等)。当你新增一个页面行为类别 (Activity) 时,你也需要先在此注册这个新增的 Activity 类别后,才能顺利调用。

转自:http://developer.51cto.com/art/201001/181343.htm

最新文章

  1. jQuery实现返回顶部
  2. python基础——使用模块
  3. java发送 get请求
  4. Flash设置全屏后,放到网页中显示不正常
  5. 【NFS项目实战二】NFS共享数据的时时同步推送备份
  6. Zepto源码分析-form模块
  7. 【国家集训队2010】小Z的袜子[莫队算法]
  8. Centos 7 查看内存占用情况相关命令
  9. windows环境pip安装时一直报错Could not fetch URL https://pypi.org/simple/xrld/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url:
  10. 网站被k
  11. WPF复制异常问题(OpenClipboard 失败 (异常来自 HRESULT:0x800401D0 (CLIPBRD_E_CANT_OPEN)))
  12. Markdown之语法入门篇
  13. C#中泛型容器Stack<T>的用法,以及借此实现”撤销/重做”功能
  14. Docker容器的生命周期管理
  15. WebAPI 抛出HttpResponseException异常
  16. 20175209 实验三《敏捷开发与XP实践》实验报告
  17. Java枚举类型的用法
  18. 阿里云 搭建Git服务器
  19. js实现数组排序
  20. addLoadEvent

热门文章

  1. 由浅入深了解Thrift之微服务化应用架构
  2. HDU4512完美队形I && HDU1423 Greatest Common Increasing Subsequence (LCIS)
  3. Android的事件处理机制详解(二)-----基于监听的事件处理机制
  4. 概述Log4j简介
  5. log4net 一分钟上手
  6. 最大 / 小的K个数
  7. CSS3实现页面的平滑过渡
  8. PLSQL:plsql中文乱码,显示问号
  9. 图片bmp格式转换为jpg格式
  10. PHPStorm IDE 快捷键(MAC)