本文共 3529 字,大约阅读时间需要 11 分钟。
Android的第一应用我们已经创建完毕,接下来我们项目的目录机构与安装及启动过程作一个分析。目录结构如下:
1、src目录存放的是Java的源文件。
package com.cooper.app;import android.app.Activity;import android.os.Bundle;public class HelloWorldActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); }}
2、gen目录存放的是由开发工具自动生成的文件。该目录下的R.java用于记录各种资源文件件的ID,将资源文件放入之后该文件自动更行,不需要开发人员进行维护,同时开发人员也不能修改,通过名称进行匹配,名称必须唯一。
/* AUTO-GENERATED FILE. DO NOT MODIFY. * * This class was automatically generated by the * aapt tool from the resource data it found. It * should not be modified by hand. */package com.cooper.app;public final class R { public static final class attr { } public static final class drawable { public static final int ic_launcher=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; }}
3、assets目录用于存放资源文件,但是不会在R.java文件中存放资源ID。如果要访问资源文件,可以通过file:///android_asset/xxx.xx。
4、res目录存放资源文件例如图片、文字等。
5、res/drawable目录用于存放图片资源,由于不同手机的屏幕大小不同,drawable-hdpi存放高分辨率的图片,drawable-ldpi存放低分辨率的图片,drawable-mdpi存放中分辨率的图片。
6、res/layout目录用于存放软件界面的文件,android应用通过XML定义软件的界面。
main.xml:
采用LinearLayout进行布局,布局方式有LinearLayout(线性布局,该布局可以纵向、横向布局,都显示的像一条线)、RelativeLayout(相对布局)、TableLayout(表格布局)、FrameLayout(帧布局)
xmlns:android 命名空间,用于顶级元素必须申明命名空间
android:orientation="vertical" 进行纵向布局,垂直摆放
android:layout_width="fill_parent" 指定宽度,撑满整个父元素,也可以通过数字制定宽度,但是必须带单位,单位有“px”、“dp”等 android:layout_height="fill_parent"指定高度,撑满整个父元素。
TextView 用于显示文字的组件
android:layout_width="fill_parent"指定宽度。 android:layout_height="wrap_content" 指定高度。文字内容有多少,就显示多高 android:text="@string/hello" 显示文字
7、res/values目录用于存放所使用的数据,例如文字、尺寸、颜色。目的是为了实现国际化,还有就是为了减小内存的占用。也可以建多个文件,选中目录右键“New”-->"other"-->"Android"-->"Android XML Values File"
strings.xml:
Hello World, HelloWorldActivity! HelloWorld应用
8、res/anim 存放定义动画效果的XML文件。
9、res/xml 用于存放Activity中的使用的文件,通过getResources().getXML读取该目录下的XML文件。
10、res/raw该目录用于存放应用中使用的原始文件。如音效文件等。这些数据不会被编译,他们被直接加入到程序安装包里,为了在程序中使用这些资源你可以通过getResourecs().open/RawResources(ID),参数ID形式R.raw.somefilename。
11、AndroidManifest.xml 这个文件列出了应用程序所提供的功能,是清单文件,以后开发好的各种组件(Activity、ContentProvider、BroadcastRecevier、Server)需要在该文件中进行配置,如果应用中使用到了系统内置的应用(电话服务、互联网服务、短信服务)你还要在该文件中声明使用权限。
xmlns:android 命名空间
package 包名,在应用中是唯一的
android:versionCode 软件版本
android:versionName 软件版本名称
application 应用
android:icon 应用图标,"@drawable/ic_launcher"这个表达式的意思是访问R.java文件中drawable内部类里面的常量所指的资源作为应用的图标
activity 代表窗口,一个应用可以有多个窗口。
android:label 窗口的标题
android:name=".HelloWorldActivity" 代表这个窗口所调用的类,“.”代表当前包名下,这种组件必须放在应用的包或子包下
intent-filter 内部过滤器
这两句代码赋予了特殊的含义,代表的意思是将这个Activity窗口作为应用的主窗口(打开应用时,会显示这个窗口)并且会显示到应用列表中,他们配合使用,并且只能在一个Activity中使用 android:minSdkVersion="8" 代表软件兼容的最低版本
注意:这些配置文件在软件安装的时候被读取。
12、default(project).properties 该文件用于定义项目环境信息,一般是不用修改此文件。
.java-->.class-->.dex-->打包(签名)-->.apk-->运行
Java编译器将java文件编译成字节码文件“.class”,android通过sdk带的dx工具把所有“.class”文件生成一个“.dex”文件,然后进行打包,采用默认签名进行签名,生成apk文件,最后运行应用。