1、建立一个简单的Hello World程序
步骤1:启动Eclipse,选择 New—>Other,如下图所示
步骤2:在出现的窗口中选择Android Project,如下图所示:
步骤3:此时会出现如下的对话框,填入相应的项目属性,对应如下:
名 称 |
属 性 含 义 |
Project Name |
工程名字,物理上就是最外层文件夹的名字 |
Build Target |
应用程序针对的目标设备 |
Application Name |
应用程序的名称,将显示在应用程序的标题栏 |
Package Name |
包名称 |
Create Activity |
是否让ADT自动创建一个默认的继承自Activity的类,该类是一个启动和控制程序的类 |
Min SDK Version |
应用程序所要求的API版本 |
创建新的Android项目
步骤4:点击Finish按钮完成项目的创建,在包管理器中展开项目后如下图所示:
2、运行创建的Hello World,看下效果图
在项目名上单击鼠标右键,然后依次选择“Run As/Android Application”即可运行刚才建立的HelloWorld项目,运行效果如图:
(按Ctrl+F12可以切换屏幕方向)
3、项目结构的剖析
首先看下刚才建立的Android项目的结构,如下图所示:
从上图中可以看出,新创建的Android项目包含了src、gen、asset、res等目录,下面就这些目录分别介绍:
² Src目录
从目录名就可猜测出这个目录是用来存放程序源码的,基本上一个Android应用程序的程序逻辑以及功能代码都是写在该目录下的,不同功能的类可以通过Java包的机制来进行区分。而我们创建的Hello World工程由于勾选了Create Activity选项,所以在该目录下生成了继承自Activity的启动与控制程序的类HelloWorld, 打开自动生成的HelloWorld.java源文件,内容如下:
上述代码重写了Activity的onCreate回调方法,在onCreate方法中调用基类的onCreate方法,然后指定用户界面为R.layout.main,对应的文件为res/layout/main.xml.
从上述代码中,大致可以猜测出当该类初次被创建的时候,会将当前的View设置为R.layout.main,即当前的界面是R.layout.main(这儿只是进行猜测)。那么我们很容易产生疑问,Gen目录下生成的R类究竟有什么用?R.layout.main又究竟是什么?在接下来的内容中会给出解答~
² Gen目录
Gen目录是ADT插件帮我们生成的,并在该目录与主程序在同一级目录下生成R.Java文件(本程序在cnblogs.com包下),打开文件查看R类内容:
这时候可以知道R.layout.main原来是一个16进制数,而从HelloWorld.java源文件来看,R.layout.main理应指向的是一个界面组件类,此处反而更像是个id,却又是作何解释?
其实,在Android应用程序中,ADT生成的R类是一个指向资源的类,更像是一个字典。在该字典中,包含了用户界面、图片、字串等各种资源对应的编号, 即以16进制表示的编号。所以由此可知,R.layout.main其实指向的是res/layout目录下的main.xml界面描述性文件,该文件会在下面进行具体介绍。之所有用R类,一个好处是在于程序在编译的时候会对该类进行查阅,对于该类中不存在即应用程序中没有使用到的资源则不会打包编译进去,从而对程序进行瘦身。
² Assets目录
该目录目前是空的,因为我们没有放任何东西进去(貌似是废话)!那么该目录干啥用的呢?其实呢,在这个目录可以放很多东西,诸如应用程序中使用到的多媒体文件(音频或者视频文件)、图片或者文本文件等。其同后面即将介绍的res目录相似,也是存放资源文件的目录,但与res目录的不同之处在于res会被编译器所编译,而assets则不会。也就是说应用程序运行的时候,res中的内容会在启动的时候载入内存,asset只有在被用到的时候才会载入内存,所以一般将一些不经常使用到的大资源文件存放在该目录下。
² res目录
在该目录下主要是存放整个应用程序的资源文件,该目录按照资源的种类默认分为三个子目录,分别为drawable、layout和values目录:
Ø drawable子目录
在该子目录下主要存放的是一些图片格式文件,支持的格式有.Png、.9.png和.jpg等位图文件。
Ø layout子目录
在该子目录下主要存放的是界面布局的XML文件,在Android的应用程序中有两种方式生成用户界面。一种是通过静态的界面描述文件,另外一种就是通过Java
代码动态生成用户界面。这时候让我们看下上述R.layout.main指向的main.xml文件的内容:
上述内容中第一行指出了xml文档的版本以及编码方式,第二行中的LinearLayout指出了界面的布局方式为线性布局,xmlns:android属性指出了使用的android架构,这个属性是必须的,每个界面描述性文件中必须有一个架构申明。第三行则指出了界面的布局是垂直布局,第四行与第五行指出宽和高将撑满整个父容器。在该界面中只定义了一个TextView组件,并且该组件宽度撑满父容器,高度则刚好适合,显示的文本引用的是values目录下string.xml中hello字符串变量(值为Hello World,HelloWorld!,即运行时候显示的那几个字),其中@符号表示引用。
Ø values子目录
该目录中包含了所有的XML格式的参数描述文件,如string.xml字符串描述文件、color.xml颜色描述文件、style.xml样式描述文件和array.xml数组描述文件等。
² AndroidManifest.xml文件
应用程序描述文件,有Java开发经验的对这个应该有种似曾相识的感觉吧~其内容如下所示:
上述内容中第一行指出xml文档版本以及编码方式,第二行指出了主程序所在的包名,这样在activity的android:name就直接设置成 .HelloWorld。如果我们又添加一个activity类,但是该类处于包cnblogs.com.cn下,那么该activity添加到上述xml文件中时候android:name需要设置成 .cn.HelloWorld2。四到五行则指出了版本信息,第六行的application节点有且仅有一个,其icon属性指出了应用程序安装完后的桌面图标,这儿通过@符号引用res/drawable目录下的 icon.png图片。在application节点之间,是我们程序中activity类,所有的添加的activity类可以通过写在该描述性文件中进行注册。从上图中看出,该activity的 intent-filter属性指出该activity类是默认程序启动时候第一个启动的窗口。
² default.properties文件
该文件打开后,你会发现没有注释的文字只有一行,即指定了应用程序针对的目标设备以及相应的API Level。