可以看出这个工程由src,gen,Android2.3.3 jar包,assets,bin,res,AndroidManifest.xml,proguard.cfg,project.properties这几个文件(夹)组成,具体作用如下所示:
文件(夹) | 作用 |
src | 源代码的目录 |
gen | 系统自动生成的源代码目录 |
Android 2.3.3 | Android 2.3.3 的核心jar包 |
assets | 资产目录 |
res | 存在图片,布局文件和字符串等的地方 |
AndroidManifest.xml | Android应用程序的配置文件 |
bin | 输出文件夹,如生成的APK文件 |
Proguard.cfg, | 定义混淆器 |
project,properties | 工程属性的配置文件 |
下面分层次详解几个重要的文件(夹)
● src文件夹
展开这个文件夹如下所示:
可以看出,这个文件夹主要用来存放源文件
●gen文件夹
展开这个文件夹如下所示:
这个R.java文件是系统自动生成的文件,非常的重要。这个R.java默认有attr,drawable,layout,string 4个静态内部类,每个类对应一种资源。例如我们在工程中添加一幅图片,那么工程就会在此类的drawable内部类中添加一条数据,如果删除了此图片,工程则会自动删除此条数据。由此可见,R.java类似于电脑中的“注册表”,这么形容应该不过分吧!
那么我们怎么通过R.java文件引用添加的资源呢?
(1) 在Java程序中,我们通过Java语法来引用资源
① R.resource_type.resource_name
例如,我们要引用工程目录下此文件
我们可以通过R.drawable.ic_launcher获得,因为此为图片文件,所以会在R.java文件的drawable内部类中注册信息
② Android. R.resource_type.resource_name
上面这个图片我们也可以用android. R.drawable.ic_launcher获得
(2) 在xml文件中引用资源
① @[package:]type/name
使用我们自己包下的资源可以省略包名。
在XML文件中,main.xml和AndroidMainFest.xml文件中如果想要引用上图的资源,我们可以通过“@drawable/ic_launcher”获得,这个表达式的意思是,@代表R.java类,drawable则代表R.java类中的静态内部类,而/ ic_launcher则代表静态内部类drawable中的属性ic_launcher,这个属性则对应上图中的那个图片!
② 如果访问android系统中的资源,那么则需要加上包名“android:”,如:
android:textColor=“@android:color/red”
(3)“@+id/string_name”表达式
在布局文件中我们需要给一些组件添加id,就可以使用此表达式。此表达式“+”表示在R.java文件的内部静态类id中添加一个静态变量“string_name”,如前面我们的代码:
- <Button
- android:id="@+id/button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/button" />
现在你清楚是什么意思了吧?
● res文件夹
展开这个文件夹如下所示:
其中drawable-hdpi用来存放高质量图片,drawable-ldpi用来存放低质量图片,drawable-mdpi用来存放中等质量的图片。
而layout文加件下面的main.xml文件则是页面布局文件。在eclipse里面我们打开此文件时选择“Graohical Layout ”模式编辑文件时,我们可以直接拖动各种空间快速进行编辑,选择“main.xml”模式则可以查看源代码,如下所示:
当然在values文件夹下还有一重要文件string.xml,此文件主要用来定义字符串和数值,其实在这个文件夹下面还可以存放arrays.xml(用来定义数组),colors.xml(用来定义颜色和颜色字串数值),dimens.xml(用来定义尺寸数值),styles.xml(用来定义样式)。
既然是存值,那么我们在Activity中怎么把值给取出来呢?笔者总结如下:
文件 | 取值方式 |
string.xml | getResource().getString(resourceId)或者getResource().getText(resourceId) |
arrays.xml | getResource().getStringArray(resourceId) |
colors.xml | getResource().getDarwable (resourceId)或者getResource().getColorourceId) |
dimens.xml | getResource().getDimension(resourceId) |
styles.xml | 不需要取值 |
● AndroidManifest.xml
这也是一个很重要的文件,如前面我们申请拨号与发送短信的权限都是在这个文件里注册申请的。当然还有其他更多的功能,由于笔者暂时也不是很清楚,所以暂时就不在这儿一一列举。
好了,了解了这么多应该对工程有了一个大体的了解,帮助自己更快速的开发。