Android程序框架分析
每一个平台都有一个自己的结构框架。我们在刚开始学习Java或C++时,会发现都会一个程序入口main方法,以及存储方式和项目的文件结构。所以,在学习android过程中,我们第一步也需要对Android的目录结构、文件类型和功能及该平台的main方法进行分析。
- Android项目目录结构
首先我们需要创建一个android项目,在package explorer 导航器中可看到创建的项目结构,如图1.1所示。
图 1.1 Andriod项目结构
大概解释一下图1.1中文件夹的用处:
- src : 项目的源文件及所有包(.java)
- gen : 存放自动生成的R文件,R.java 定义项目中所有资源的索引文件
- res : 包含项目中的资源文件,如布局文件(layout)、图片(drawable)、常量(values)等。在values文件中还包含了 strings.xml 、dimens.xml 、style.xml
- style.xml :存放android下显示的样式
- dimens.xml :存放屏幕适配所用到的尺寸
- strings.xml :存放android字符串
- AndroidManifest.xml: android应用程序的入口文件. 声明了android里边的组件. 和相关配置信息.
每一个安卓项目都必须要有AndroidManifest .xml 文件和R.java,这是Java项目中没有的。下面依次介绍一下,先看看R文件中的代码清单1.2。
代码清单1.2:
package com.example.test;
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int ic_launcher=0x7f020057;
}
public static final class layout {
public static final int activity_main=0x7f030018;
}
public static final class string {
public static final int app_name=0x7f0a000d;
public static final int hello_world=0x7f0a000e;
}
}
R文件定义了很多的常量,这些常量跟res文件中相互对应,也就是说R文件是所有资源的索引文件。R.java文件不能手动添加,当我们在添加新的资源项时,R.java将会自动生成。
接下来看看AndroidManifest.xml文件,如代码清单1.3。
代码清单1.3:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.test"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="21" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
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>
</manifest>
下面来仔细分析一下该文件。
- xmlns:android -声明命名空间,使标准属性能在文件中使用,提供大部分元素的数据
- package-声明应用程序包
- application -组件声明,可以包括 activity 、service、receiver、provider等标签,还有一写icon、主题及必要的权限。注意的是一个manifest只能包括 一个或零个application元素,不能超过一个。
- android:icon -程序图标
- android:label -应用程序的名字
- activity -用于与用户交互,用户每次打开一个应用程序的页面就是一个activity。注意:每个Activity必要要有
<activity>
标签进行声明,不然运行不了该页面。另外,还配有<intent-filter>
标签来描述activity进行的操作,便于运行时查找Activity。 - android:name - 启动的Activity
intent-filter -声明了指定的一组组件支持的Intent值,从而形成Intentfilter。
以上是对R文件以及AndroidManifest.xml文件的描述,接下来会对其他文件进行描述。