首页 > 代码库 > Android基础(1)--工程目录结构分析
Android基础(1)--工程目录结构分析
一般来说,android项目结构大体是相同的,由于adt中使用的android SDK版本为4.4.2,所以就以这个版本的项目目录来分析。
这是一个完整的项目目录结构,下面我们就依次分析每个文件的作用。
1. src目录
顾名思义,就是存放java源代码的地方。
2. gen目录
是java自动生成的文件,不能手动修改。
其中,android.support.v7本质上就是java library,通常还会有v4,v13。
Android Support V4:是最早(2011.4)实现的库。用在Android 1.6(API level 4)或者更高版本之上,它包含了相对V4,V13大多的功能。
Android Support V7:这个包是为了考虑Android 2.1(API level 7)及以上版本而设计的,但是v7是要依赖v4这个包的,也就是如果要使用,两个包得同时被引用。 v7支持了Action bar。
Android Support V13:这个包的设计是为了Android 3.2及更高版本的,一般我们都不常用,平板开发中能用到。
为什么要有support库呢?
如果在低版本Android平台上开发一个应用程序,而应用程序又想要使用高版本才拥有的功能,就需要使用support库。
如何使用?
首先要保证Android Support Library 被安装;
然后在工程中增加(例如 support-v4 Library)
在ADT中需要按照以下步骤:
1、右击当前工程,查找Properties
2、选择Java Build Path
3、选择Libraries tab,点击右边面板的Add External JARs按钮
4、选择android-support-v4.jar文件,这一文件的常见路径为:YOUR_DRIVE\android-sdks\extras\android\support\v4\android-support-v4.jar
5、完成添加后,选择Order and Export标签,确认即可。
BuildConfig.java文件:早先的版本并没有这个文件,它是Android ADT更新后来添加的,它的作用是代码的辅助检查,在整个工程中不断自动检测。
R.java文件:默认有attr、drawable、layout、string等四个静态内部类,每个静态内部类分别对应着一种资源,如layout静态内部类对应layout中的界面文件,其中每个静态内部类中的静态常量分别定义一条资源标识符,如public static final int main=0x7f030000;对应的是layout目录下的main.xml文件。
当开发者在res/目录中任何一个子目录中添加相应类型的文件之后,ADT会在R.java文件中相应的内部类中自动生成一条静态int类型的常量,对添加的文件进行索引。如果在layout目录下再添加一个新的界面,那么在public static final class layout中也会添加相应的静态int常量。相反当我们在res目录下删除任何一个文件,其在R.java中对应的记录会被ADT自动删除。
R.java文件除了有自动标示资源的索引功能之外,还有另外一个主要的功能,如果res目录中的某个资源在应用中没有被使用到,在该应用被编译的时候系统就不会把对应的资源编译到该应用的APK包中,这样可以节省Android手机的资源。
3. 工程中引用的第三方jar包
4. assets目录
用于存放应用程序中使用的外部资源文件,程序可以通过I/O流对目录中的文件进行读写,存放在此目录下的文件都会被打包到发布包中。
5. bin目录
输出文件夹,如生成的APK文件。
AndroidMainfest.xml:必要文件,描述了package中的全局数据,包括了package中暴露的组件(activities, services, 等等),它们各自的实现类,各种能被处理的数据和启动位置。
此文件一个重要的地方就是它所包含的intent-filters。这些filters描述了activity启动的位置和时间。每当一个 activity(或者操作系统)要执行一个操作,例如:打开网页或联系簿时,它创建出一个intent的对象。它能承载一些信息描述了你想做什么,你想 处理什么数据,数据的类型,和一些其他信息。Android比较了intent对象中和每个application所暴露的intent-filter中 的信息,来找到最合适的activity来处理调用者所指定的数据和操作。
除了能声明你程序中的Activities, Content Providers, Services, 和Intent Receivers,你还能指定permissions和instrumentation(安全控制和测试)在AndroidManifest.xml文 件中。
6. libs目录
用于存放第三方库。
7. res目录
res/drawable-hdpi(WVGA、FWVGA):保存高分辨率图片资源。
res/drawable-ldpi:保存低分辩率图片资源。
res/drawable-mdpi(HVGA):保存中等分辨率图片资源。
res/drawable-xhdpi(720P):保存高分辨率图片资源。
res/drawable-xxhdpi(1080P):保存高分辨率图片资源。
图片资源可以使用Resources.getDrawable(id)可以获得资源类型。
res/layout:存放所有的布局文件,主要是用于排列不同的显示组件,在Android程序中要读取此配置。
layout目录内默认布局文件是activity_main.xml,可以在该文件内放置不同的布局结构和控件,来满足项目界面的需要,也可以新建布局文件。
可以看到layout下有两个xml文件:
这是因为Activity也有它的局限性,同样的界面在手机上显示可能很好看,在平板上就未必了,因为平板的屏幕非常大,手机的界面放在平板上可能会有过分被 拉 长、控件间距过大等情况。这个时候更好的体验效果是在Activity中嵌入"小Activity",然后每个"小Activity"又可以拥有自己的布 局。因此,我们今天的主角Fragment登场了。
为了让界面可以在平板上更好地展示,Android在3.0版本引入了Fragment(碎片)功能,它非常类似于Activity,可以像 Activity一样包含布局。Fragment通常是嵌套在Activity中使用的,现在想象这种场景:有两个 Fragment,Fragment 1包含了一个ListView,每行显示一本书的标题。Fragment 2包含了TextView和 ImageView,来显示书的详细内容和图片。
res/values: 存放一些资源文件的信息,用于读取文本资源,在本文件夹之中有一些约定的文件名称:arrays.xml:定义数组数据;(在个这个xml命名的时候可以随便起名,因为最后用的时候只是用到写在这个xml文件中的array的名字)
menu:存放定义了应用程序菜单资源的XML文件。
values, values-v11, values-v14:存放定义了多种类型资源的XML文件。
Android基础(1)--工程目录结构分析