平台简介
令人激动的Google手机操作系统平台-Android正式发布了,这是一个开放源代码的操作系统,内核为Linux. 作为开发者,我们所关心的是这个平台的架构以及所支持的开发语言。下面是这个平台的架构模型:
这个平台有以下功能:
+ Application framework: 可重用的和可替换的组件部分,在这个层面上,所有的软件都是平等的。
+ Dalvik virtul machine: 一个基于Linux的虚拟机。
+ Integrated browser: 一个基于开源的WebKit引擎的浏览器,在应用程序层。
+ Optimized graphics: 包含一个自定义的2D图形库和基于OpenGL ES 1.0 标准的3D实现。
+ SQLite: 数据库
+ Media support: 通用的音频,视频和对各种图片格式的支持(MPEG4, H.264, MP3, AAC, AMR,JPG, PNG, GIF)
+ GSM Telephony: GSM 移动网络, 硬件支持。
+ Bluetooth, EDGE, 3G, andWiFi: 都依赖于硬件支持。
+ Camera, GPS, compass, and accelerometer: 都依赖于硬件支持。
+ Rich development environment: 包含一套完整的开发工具集,方便跟踪调试,内存检测和性能测试,而且提供了Eclipse的插件。
下面我们就来亲身体验一下Android程序的开发之旅。
先介绍一下开发环境,下面是对系统及相关软件的版本要求:
将界面实现用XML编排
你刚刚完成的"Hello,World"例子我们称之为”程序化”的界面编排。意思就是说构建你的应用程序界面是直接使用的源代码。如果你已经完成过很多界面程序,你大概熟悉像此类的方式是多么脆弱:一个对布局小小的修改会对源代码造成很头疼的事情。如果忘掉与View的紧密结合,这个导致代码出错和浪费你的调试时间的界面问题也会很简单。
这就是为什么Android提供了一种可替换的界面构建方式:基于XML的布局文件。最简单的解释这个概念的方式就是展示一个例子。我们就用刚才创建的项目来进行演示,达到相同的界面效果。
<?xmlversion="1.0" encoding="utf-8"?>
<TextViewxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Hello, Android"/>
AndroidXML布局文件的大体的结构很简单。它是一个标签的树,任何一个标签就是View类的名字。在这个例子中,它是一个很简单的只有一个元素的树,一个 TextView。 你可以使用任何继承自View类的名字作为标签的名字。包括在你的代码中自定义的View类。这个结构可以很容易的构建界面,它比你在源代码中使用的结构和语法更简单。这个模式的设计灵感来自于Web开发。就是可以将界面和应用程序逻辑分离的模式。
在这个例子中, 也有些是XML的属性,下面是他们的含义:
属性 | 含义 |
xmlns:android | 这是XML命名空间的声明,它是告诉Android的工具, 你将要涉及到公共的属性已被定义在XML命名空间。在每一个Android的布局文件的最外边的标签必须有这个属性。 |
android:layout_width | 这个属性定义了在屏幕上这个View可用的宽度是多少。 |
android:layout_height | 这个属性定义了在屏幕上这个View可用的高度是多少。 |
android:text | 设置TextView所包含的文本内容,当前设置为”Hello, Android”信息 |
以上就是一个XML布局文件的样子,但是你需要放在哪里?它要放在你的项目目录的res/文件夹下。“res”是”resources”的缩写,它是存放所有非代码资源的文件夹,包含象图片,本地化字符串和XML布局文件。
这些Eclipse的插件已经给你创建好了,在我们上面的例子中,我们没有使用它。在包浏览器中,展开res目录的layout.并且编辑 main.xml,替换掉那个文本内容,然后保存。
现在,在包浏览状态,打开在代码文件夹中名为 R.java的文件, 你将看到下面的内容:
public finalclass R {
public static final class attr {
};
public static final class drawable {
public static final int icon=0x7f020000;
};
public static final class layout {
public static final int main=0x7f030000;
};
public static final class string {
public static final int app_name=0x7f040000;
};
};
一个项目的R.java文件是一个定义所有资源的索引文件。使用这个类就像使用一种速记方式来引用你项目中包含的资源。这个有点特别的强大像对于Eclipse这类IDE的代码编译特性,因为它使你快速的,互动式的定位你正在寻找的特定引用。