



知识点讲解:光盘:视频\知识点\第4章\分析Android应用工程文件.avi
讲解完Android的整体结构之后,接下来开始讲解Android工程文件的组成。顶层的Android应用程序通常使用Eclipse+Java组合来实现,在Eclipse工程中,一个基本的Android项目的目录结构如图4-2所示。
图4-2 Android应用工程文件组成
在本节的内容中,将详细讲解Android应用程序工程文件中各个组成部分的具体信息。
src程序目录下保存了开发人员编写的程序文件。和一般的Java项目一样,src目录下保存的是项目的所有包及源文件(.java),包含了项目中的所有资源,例如,程序图标(drawable)、布局文件(layout)和常量(values)等。不同的是,在Java项目中没有gen目录,也没有每个Android项目都必须有的AndroidManfest.xml文件。
.java格式文件是在建立项目时自动生成的,这个文件是只读模式,不能更改。R.java文件是定义该项目所有资源的索引文件。例如下面是某项目中R.java文件的代码。
package com.yarin.Android.HelloAndroid;
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int icon=0x7f020000;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
}
}
在上述代码中定义了很多常量,并且这些常量的名字都与res文件夹中的文件名相同,这再次证明.java文件中所存储的是该项目所有资源的索引。有了这个文件,在程序中使用资源将变得更加方便,可以很快地找到要使用的资源,由于这个文件不能手动编辑,所以当我们在项目中加入了新的资源时,只需要刷新一下该项目,.java文件便自动生成了所有资源的索引。
文件AndroidManfest.xml是一个控制文件,里面包含了该项目中所使用的Activity、Service和Receiver。例如下面是某项目中文件AndroidManfest.xml的代码。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yarin.Android.HelloAndroid"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon"
android:label="@string/app_name">
<activity android:name=".HelloAndroid"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="9" />
</manifest>
在上述代码中,intent-filters描述了Activity启动的位置和时间。每当一个Activity(或者操作系统)要执行一个操作时,它将创建出一个Intent的对象,这个Intent对象可以描述你想做什么,你想处理什么数据,数据的类型,以及一些其他信息。Android会和每个Application所暴露的intent-filter的数据进行比较,找到最合适Activity来处理调用者所指定的数据和操作。下面我们来仔细分析AndroidManfest.xml文件,如表4-1所示。
表4-1 AndroidManfest.xml分析
下面我们看看在资源文件中对常量的定义,例如文件String.xml的代码如下所示。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, HelloAndroid!</string>
<string name="app_name">HelloAndroid</string>
</resources>
上述常量定义文件的代码非常简单,只定义了两个字符串资源,请不要小看上面的几行代码。它们的内容很“露脸”,里面的字符直接显示在手机屏幕中,就像动态网站中的HTML一样。
布局(layout)文件一般位于res\layout\main.xml目录,通过其代码能够生成一个显示界面。例如下面的代码。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
</LinearLayout>
在上述代码中,有以下几个布局和参数。
在上述布局代码中,使用了一个TextView来配置文本标签Widget(构件),其中设置的属性android:layout_width为整个屏幕的宽度,android:layout_height可以根据文字来改变高度,而android:text则设置了这个TextView要显示的文字内容,这里引用了@string中的hello字符串,即String.xml文件中的hello所代表的字符串资源。hello字符串的内容“Hello World,HelloAndroid!”这就是我们在HelloAndroid项目运行时看到的字符串。
注意: 上面介绍的文件只是主要文件,在项目中需要我们自行编写。在项目中还有很多其他的文件,那些文件很少需要我们编写,所以在此就不进行讲解了。