参考官方网站
Hello, Android!
作为开发者,你的第一感觉是你拿到这个开发框架写“Hello, World!”程序时的难易程度给你留下的。 当然,在Android里,这个非常容易,下面我给你演示:
下面的章节将详细描述
让我们开始把
创建工程
创建一个尽可能简单的工程,Eclipse的插件可以使Android的开发变得简单。
你需要一台装有 Eclipse IDE (参考系统和软件需求), 你还需要安装 Android Eclipse 插件 (ADT)。 如果你都准备好了, 继续看这里。
首先,你需要对如何创建“Hello, World!”有个大概的了解:
- 在菜单中 File > New > Project 中创建一个新的Android 项目。
- 在创建Android项目的对话框里填写项目的详细信息。
- 编辑自动生成代码的模板去显示一些输出。
这样就可以了,下一步,我们将详细讲解每一步。
- 创建一个新的Android项目
打开Eclipse, 选择File > New > Project如果Android的Eclipse的插件正确安装了,弹出的对话框里就会有一项“Android”,这一项有唯一的子项 “Android Project”。
选中“Android Project”,点下一步。
- 填写工程的详细信息
下一步需要你填写项目的详细信息,这里有个例子:
每一项具体的意思:
工程名 你想把工程保存在你机器上哪个目录里 包名 >包的命名空间(需要遵循java编程语言的命名规则),你的所有代码都会在这个命名空间下。这也会生成包的名称从而活动自动生成。你使用的这个包的名字必须和其他安装在你机器上的包名字不冲突,所以,使用一个标准规则的包名字是非常重要的。如上例,我们使用包的名字为“com.android”,但你需要使用一个不同的类型。 “活动”名 这是插件为你自动生成类的名字。它也会是Android活动类的一个子类。一个活动仅仅是一个包含一些功能并能执行的类。如果它选择,可以创建用户界面,但这不是必须的。 程序名 这是最后生成应用程序的名字。 可选框里"Use default location" 允许你选择其他目录保存项目产生的其它文件。
- 编辑自动生成代码
运行插件后,会自动生成一个类“HelloAndroid ”(可以在程序包里 HelloAndroid > src > com.android.hello找到)。 像这样:
public class HelloAndroid extends Activity {
/** 活动第一次被创建后调用。 **/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}现在,你可以执行程序了。不过我们还可以进一步研究下,这样我们能更好得理解程序。所以,下一步我们可以改一些代码
建立UI
看下面我们修改的代码,你可以在你的HelloAndroid.java文件里做相同的修改,我们来逐行分析:
package com.android.hello;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloAndroid extends Activity {
/** 活动第一次被创建后调用 */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText("Hello, Android");
setContentView(tv);
}
}
小提示: 如果你忘记引入 TextView的包,可以尝试 Ctrl-Shift-O (如果是Mac系统Cmd-Shift-O)。 这是Eclipse管理应用的快捷方式-它会显示没有找到的包然后自动为你加上。
在Android里,用户接口由一些称之为视图的不同层次的类组成。 一个视图就是一个简单的对象。如单选框,动画控件,一个文本框(我们的例子里的),我们称处理文本的这样一个子视图就叫TextView。这里教你如何创建 TextView。
这里教你如何创建TextView:
TextView tv = new TextView(this);
TextView构造器就是Android上下文的实例,这个上下文仅仅是指向系统的一个句柄,它提供像资源处理之类的服务。包含一些进入资料库以及参数选择的入口。这个活动也是继承上下文。 HelloAndroid类是活动的一个子类,它也是一个上下文,我们能通过 this
操作TextView。
创建TextView后,加入需要显示的内容:
tv.setText("Hello, Android");
这里很正常。
我们创建一个TextView,然后告诉它显示的内容。最后一步就是让TextView在屏幕上显示出来,像这样:
setContentView(tv);
活动里setContentView()的方法表明哪个视图需要在当前UI上被操作。如果一个活动不能调用这个方法,那么当前就没有界面系统显示为一个空白屏幕。我们仅仅想显示一些文本,所以我们将刚才创建的TextView连接上
这就是Android平台里的“Hello,World”,当然,我们可以看下运行情况。
执行代码:Hello,Android
Eclipse的插件使得你的程序很容易运行。选择Run>->Open Run Dialog菜单。(Eclipse3.4版本中,菜单为Run->Run Configurations)可以看到这样的对话框
下一步,选择“Android Application”,点击在左上角(按钮像一张纸上有个“+”号)或者双击“Android Application”。 有个新的选项“New_configuration”。
将名字改得更形象一点,如“Hello,Android”,然后按Browse按钮选择你的项目,(如果你Eclipse里有多个Android项目需要打开,确定要选择正确)插件会会自动扫描你项目里的活动子类,然后在“活动”的下拉菜单里加载。如果你的“Hello,Android”项目只有一个,它将被设置为默认项目,然后你可以继续。
点击“Apply”按钮,这里有个例子:
这样就可以了,点击“Run”按钮,Android的模拟器启动。一启动你的程序就会出现,当一切OK,你可以看到:
这就是Android的“Hello, World”,是不是非常简单呢?下一章节我们将提供更详细的信息。当你接触更多的Android时,你会发现它非常有价值。
使用XML构建UI
你刚刚完成的“Hello,World”的例子使用的是我们称为“可编程”的UI层,意思是你通过编写代码来组建UI层。当你开发了足够多的UI程序,你会发现一些很糟糕的现象:一些小的变化需要你做大量的代码改动。你常常会忘记将View连接起来,这样会导致一些错误,浪费你很多时间去调试代码。
这就是Android为什么提供一个可变化的UI开发模块:基于XML的文件。最简单解释这个概念就是演示个例子。这里有个XML的文件,它能达到和你刚才完成代码同样的效果:
<?xml version="1。0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Hello, Android"/>
通常Android里XML文件结构是很简单的。只是一些标记的树形集合,每个标记就是一个视图类。在这个例子中,它就是一个简单的TextView元素的树,你可以在XML文件里使用任何扩展类的名字作为你的标记,这也包括你在你的自己的代码里定义的名字。这个结构使得你能使用简单结构和语法快速的组建UI,这种模型就像网站的开发模型,你能够将UI和程序逻辑分开,单独获取或者填充数据。
在这个例子里,有4个XML属性,下面是属性的大概意思:
属性 | 描述 |
---|---|
xmlns:android |
这是一个XML命名空间,告诉Android开发工具你准备使用Android命名空间里的一些通用属性。在所有Android XML设计文件中最外层的标记必须使用这个树形。 |
android:layout_width |
这个属性定义了这个视图需要占用的屏幕宽度。在这个例子中,我们仅有的一个视图可以占用整个屏幕,那就是“fill_parent”的意思。 |
android:layout_height |
这个和“layout_width”差不多,表示占用屏幕的高度。 |
android:text |
这个设置文本显示内容,在这个例子里,我们使用“Hello,Android”。 |
这就是XML的布局,你需要把这个文件放在什么位置? 放在你的工程/res/layout下就可以。“res”是“resource”的简称,这个目录包含了所有应用程序需要的非代码部分。比如图片、字符串、XML文件。
Eclipse插件为你创建了这些XML文件中的一个。在我们上面的范例,我们根本没有使用过它。在包的管理器里,展开目录/res/layout,编辑main.xml文件,替换上面的文本然后保存修改。
在从代码目录里打开 R.java文件,你可以看到他们像这样:
public final class 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工具里,这个方式对于代码自动完成功能还是非常有效的,因为这能让你快速得定位你要寻找的东西。
有个重要点需要注意的是有个内部类“main”,是“layout”的成员类。Eclipse插件提醒你加了一个新的XML文件,然后生成R.java文件,当你加入其他资源到你的工程里,你可以看到R.java在同步更改。
最后要做的就是使用你最新版本的XML修改你的HelloAndroid代码去代替以前的编码。 这个有例子说明重新写过的类的模型,你可以看到,代码变得非常简单:
package com.android.hello;
import android.app.Activity;
import android.os.Bundle;
public class HelloAndroid extends Activity {
/** Called when the activity is first created */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
当你做这些修改的时,你只需要拷贝、复制。在那个R的类里你可以使用代码自动完成功能,你会发现那确实很有帮助。
现在你已经完成了这些修改,继续执行你的程序-你需要做的就是按下绿色的“Run”按钮,或者在菜单中选择Run->RunHistory->Hello,Android。 你可以看到… 哇哦,和之前看到的一样!这点表明两种不同的构建方式都能达到同样的结果。
还有很多方法去创建XML文件,在你想做之前。 读一下 实现用户接口 可以获得更多信息。
调试工程
Android对Eclipse开发的插件和Eclipse的调试工具结合得也很好。 为了演示一下,我们在代码里加入一个bug。你可以像下面的代码一样修改你的代码:
package com.android.hello;
import android.app.Activity;
import android.os.Bundle;
public class HelloAndroid extends Activity {
/** 活动第一次被创建后调用 */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Object o = null;
o.toString();
setContentView(R.layout.main);
}
}
这个修改仅仅引入了一个NullPointerException到你的代码里。 如果你再次运行程序,最后你会看到:
按“Force Quit”终止程序并关掉模拟器窗口。
为了寻找错误的原因,设置一个断点在 Object o = null;
(在代码行旁边的标记栏双击);然后从菜单选择Run->DebugHistory->Hello,Android进入调试模式。你的应用程序会在模拟器里重新启动,但这次会在你设的断点处停住。你可以在Eclipse’s Debug Perspective里单步执行代码,就像你调试其他程序一样。
不使用Eclipse创建工程
如果你不使用Eclipse(比如你喜欢其他IDE工具,或者仅仅使用文本编辑器或者命令行工具),那么Eclipse的插件对你没有作用。别担心-它不会因为你不使用Eclipse而使用失去任何功能。
Android对Eclipse的插件仅仅是Android SDK外围的一个工具。(这些工具如: 模拟器,aapt, adb, ddms等等都在 其他文档) 因此,将这些工具和其他工具如“ant”编译文件结合也是有可能的。
Android SDK里包含一个Python的脚本“activitycreator.py”,它可以为你的项目创建所有的代码以及目录。就像ant中的“build.xml”文件。这允许你使用命令行编译你的工程或者使用你自己的IDE工具集成。
例如,就像我们刚使用Eclipse创建的HelloAndroid项目,你可以使用命令:
activitycreator.py --out HelloAndroid com.android.hello.HelloAndroid
编译工程的时候,你运行“ant”命令,当命令成功执行后,将在“bin”目录里产生一个 “HelloAndroid.apk”的文件,“apk”文件是Android的一个包,你可以使用“adb”工具安装或者执行。
如果想获得更多信息,请阅读网站提供的替他文档。