天天看点

《Android UI基础教程》——1.2节Android 应用程序的基本结构

本节书摘来自异步社区《android ui基础教程》一书中的第1章,第1.2节android 应用程序的基本结构,作者 【美】jason ostrander,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.2 android 应用程序的基本结构

android ui基础教程

在开始一个android项目时,eclipse ide已经为你创建了一个初始的工程结构。这个工程包含你需要用来构建应用程序的所有所需元素,你也应把所有的工作内容放置于这个工程中。尽管可以创建一个应用程序之间的代码共享的库工程,但对于绝大多数应用程序来说,并没有这个必要。本节将会介绍基本的工程文件夹结构以及应该在哪里放置代码、布局文件和素材。

1.2.1 文件夹结构

对在package explorer的示例工程文件夹的基础上进行扩展,并仔细观察工程结构。android使用的是标准的java应用程序的布局。表1.1总结了工程结构。

《Android UI基础教程》——1.2节Android 应用程序的基本结构

1.2.2 android manifest

android manifest包括应用程序的结构和功能的所有信息。它包括应用程序所使用的所有活动、所提供的服务、任何通过内容提供商可访问的数据库内容以及它处理的任何意图。

在该manifest中你可以声明应用要正常运行所需的硬件功能。举个例子,如果应用需要触屏设备才能够正常运转,那么在manifest中需要包括进下面这行:

按照应用所需来声明硬件功能使得android market可以根据用户的硬件配置来合理地筛选应用。这样没有触屏手机的用户就不会下载到要求有触摸屏才能正常运行的应用。

你应该努力使应用程序尽可能广泛地兼容。列出应用需要使用的功能,通过代码来动态决定它们的可用性并使得降低用户体验的方式尽可能保持优雅。

在该manifest中你同样要声明应用所需使用的权限。与硬件要求不同,所有运行应用所需的权限声明都必须包括在manifest中。不存在有可选的声明。

注意: 用户对于要求权限过于宽泛的应用毫不留情。尤其是对于那些要求位置信息的应用。仔细考虑应用的权限需求,不要请求多余的权限。

应用程序使用的图标和标签也要在manifest中声明。你可以把这些属性赋给manifest中的许多xml元素。最重要的是顶层的<application>元素。它决定应用程序将如何在主界面以及应用页展示。然而,图标/标签的组合并不只是适用于<application>元素。你可以把它们应用于权限元素之上,这将会在用户确认安装应用程序时展示出来。你也可以把它们置于<activity>元素,用户将会在进程监视器中看到它们。这些元素能够被任何子组件继承。因此,如果已经设置好<application>图标和标签,但是<activity>和<intent>的图标和标签并没有设置,那么这些元素将会默认使用<application>的图标和标签。此设置允许你使用特定组件的图标和标签来告知用户应用程序的功能。

最后,manifest是声明所支持的android api版本的地方。正确地声明api级别很重要,因为尝试引用不支持的api将会导致你的应用程序崩溃。这也能很好地防止应用程序被安装于未测试过的新的api版本。表1.2列出了更多关于api级别的信息。

《Android UI基础教程》——1.2节Android 应用程序的基本结构

1.2.3 资源

android应用在res/文件夹中存储所有的资源。什么是资源?基本上,所有不是java代码的都是资源。图像、布局文件、应用程序字符串、局部字符串、主题甚至动画都放在res/文件夹中。android使用目录结构来隔离资源使得在不同设备配置上都能使用。在hello world应用中,有3个drawable文件夹:drawable-ldpi、drawable-mdpi和 drawable-hdpi,分别代表低、中、高密度的资源。运行时,android系统会基于设备硬件选择合适的资源。如果没有资源能够匹配,它将会选择最接近的匹配资源。在第3章中对此将会有深入讲解。

在布局中使用的常量值都放置在res/values/文件夹下。你应当把所有的颜色、尺寸规格、风格以及字符串放置在此文件夹中。在示例的hello world应用中,有一个单个的strings.xml文件包含所有的应用中用户可见的字符:

你不能使用java代码或者xml布局文件中的字符串常量。任何用户可见的字符串都需要在strings.xml文件中声明。这使得你的资源随后进行本地化更加容易。在应用中可通过字符串元素的名称属性引用这些字符串。

res/layout/文件夹也包含声明应用程序布局的xml文件。android ui可以通过xml或者java代码创建。推荐使用xml构建布局,因为它能够很好地把ui和应用逻辑分离开。不同的文件夹名代表不同的布局文件,以适配不同配置的设备。