1.6 Android应用程序的项目结构
从上面的项目中读者已经知道了通过Android SDK可以自动生成一个项目包,但是没有对项目包里的内容进行介绍,本节对项目包中的内容一一进行介绍,项目包如图1-19所示。
图1-19 Android应用程序项目结构
● src源代码目录:该目录存放Android应用程序所有的源代码。该目录下有不同的包,包中对应开发的源程序,开法人员开发的主要精力都集中在开发src目录下的内容。
● gen文件夹目录:该目录存放了Eclipse的ADT插件自动生成的R.java文件。实际上,R.java定义了一个R类,它包含了应用中用户界面、图像、字符串等各种资源与之相对应的资源编号(id),这些资源编号都是系统自动生成的,即有一个资源对象,系统就为其在R类中生成相应资源编号,好比一本字典。
提示:Android应用程序中通过R类来实现对资源的应用。同时,编译器也会查看这个资源列表,没有使用到的资源就不会编译进去,为手机应用程序节省空间。
● res资源目录:该目录下定义了drawable、layout及values三个目录,下面对这三个目录一一进行介绍。
drawable目录:该目录下有drawable-hdpi、drawable-ldpi和drawable-mdpi三个文件夹,分别用来存放不同分辨率的图片资源,用于不同分辨率的手机的开发,开发人员可以通过Resource.getDrawable(id)获得该资源。
layout目录:该目录下包含了所有使用XML格式的界面描述文件。主要用于表述应用程序的用户界面布局,也用于描述用户界面和接口组件。
提示:开发人员也可以直接通过Java代码来创建用户界面,不过使用XML描述文件则程序更简单,架构更清晰,维护也更容易。在这里需要强调的是,如果需要在程序中使用这些用户界面组件,必须通过前面提到的R类来调用。
values目录:该目录包含了使用XML格式的参数描述文件,读者可以在此添加一些额外的资源,如字符串(string.xml)、颜色(color.xml)、样式(style.xml)和数组(arrays.xml)等。主要用于在代码中通过R类来调用它们,而不直接使用,这样就可将代码和资源分开管理,便于维护。
除了以上文件夹外,还有一个AndroidManifest.xml文件,该文件系统的控制文件告诉系统如何处理创建的所有顶层组件,尤其是Activity、IntentReceiver、Service及ContentProvider,凡是需要用到的组件都要在此注册,同时该文件也是所有Android应用程序都需要的文件,其描述了程序包的全局变量,包括公开的应用程序组件和为每个组件的实现类,什么样的数据可以操作、在什么地方可以运行等。
这个文件中最重要的一个内容就是Intent过滤器,这个过滤器描述了何时何种情况下让Activity启动。当一个Activity(或操作系统)想要执行一个动作,它将创建一个Intent对象。该对象包含了很多描述符,描述了想做的操作,包括处理的数据、定义数据的类型及一些其他的信息。Android将Intent对象中的信息与所有公开的Intent过滤器比较,找到一个最能恰当处理请求的数据和动作(Activity)。
提示:除上述功能以外,AndroidManifest.xml文件中也可以指定权限、安全控制及测试,这些功能在以后的开发中会经常用到。