刚刚接触Android,就去网上找资料,教程实现自己的Android hello world!,下面是在操作过程中整理的笔记。
1, 创建一个新的Android项目
启动Eclipse, 选择 File -> New -> Project 菜单, 如果你安装好了Android的Eclipse插件,你将会在弹出的对话框中看到"Android Project" 的选项
2, 填写项目的细节参数.
下面的对话框需要你输入与项目有关的参数:
Project Name: 包含这个项目的文件夹的名称。
Package Name: 包名,遵循JAVA规范,用包名来区分不同的类是很重要的,例子中用到的是"com.example.first_android",你应该按照你的计划起一个有别于这个的路径的名称。
Activity Name: 这是项目的主类名,这个类将会是Android的Activity类的子类。一个Activity类是一个简单的启动程序和控制程序的类。它可以根据需要创建界面,但不是必须的。
Application Name: 一个易读的标题在你的应用程序上。
[构建界面]
当一个项目建立好以后,最直接的效果,就是在屏幕上显示一些文本,下面是完成后的代码,稍后我们在逐行解释。
public class FirstAndroid extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText("Hello,Android!");
setContentView(tv);
}
注意你还需要添加 import android.widget.TextView; 在代码开端处。
在Android程序中, 用户界面是由叫做Views类来组织的。
一个View可以简单理解为可以绘制的对象,像选择按钮,一个动画,或者一个文本标签(这个程序中),这个显示文本标签的View子类叫做TextView
如何构造一个TextView:
TexiView tv = new TextView(this);
TextView的构造参数是Android程序的Context实例, Context可以控制系统调用, 它提供了诸如资源解析, 访问数据库等等。Activity类继承自Context类,因为我们的HelloAndroid 是Activity的子类, 所以它也是一个Context类,所以我们能用"this"在TextView构造中。
当我们构造完TextView后,我们需要告诉它显示什么:
tv.setText("Hello, Android");
这个步骤很简单,当我们完成了这些步骤以后,最后要把TextView显示在屏幕上。
setContentView(tv);
Activity的setContentView()方法指示出系统要用哪个View作为 Activity的界面, 如果一个Activity类没有执行这个方法,将会没有界面并且显示白屏。在这个程序中,我们要显示文本,所以我们传入已创建好的TextView。
好了,程序代码已经写好,下面看看运行效果。
运行代码:
Hello, Android!
使用Android的Eclipse插件就可以很轻松的运行你的程序,选择Run -> configuration。你将会看到一个部署对话框
直接双击 "Android Application" 标签, 你将会看到一个新的运行项目,名为"New_configuration"
取一个可以表意的名称,比如"Hello, Android", 然后通过Browser按钮选取你的项目(如果你有很多个项目在Eclipse中,确保你选择要运行的项目),
然后插件会自动搜索在你的项目中的Activity类并且将所有找到的添加在"Activity"标签的下拉列表中。
我们只有"first_android"一个项目,所以它会作为默认选择。
点击apply按钮。到这里,已经完成了,你只需要点击"Run"按钮,然后 Android的模拟器将会启动,你的应用程序就会被显示出来。
下面继续介绍如何把界面的布局用XML表示以及使用命令行进行编译和运行Android程序
刚刚完成的"Hello, World"例子我们称之为”程序化”的界面编排。意思就是说构建你的应用程序界面是直接使用的源代码。如果你已经完成过很多界面程序,你大概熟悉像此类的方式是多么脆弱:
一个对布局小小的修改会对源代码造成很头疼的事情。如果忘掉与View的紧密结合,这个导致代码出错和浪费你的调试时间的界面问题也会很简单。
这就是为什么Android提供了一种可替换的界面构建方式: 基于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!"/>
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. 并且编辑里面的 <项目名.xml>文件, 用
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Hello, Android!"
替换掉那个文本内容,然后保存。
现在,在包浏览状态,打开在代码文件夹中名为 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 activity_first_android=0x7f030000;
};
public static final class string {
public static final int app_name=0x7f040000;
};
};
一个项目的R.java文件是一个定义所有资源的索引文件。 使用这个类就像使用一种速记方式来引用你项目中包含的资源。这个有点特别的强大像对于Eclipse这类IDE的代码编译特性,因为它使你快速的,互动式的定位你正在寻找的特定引用。
到目前需要注意的重要事情是叫做”layout”的内部类和他的成员变量”activity_first_android”, 插件会通知你添加一个新的XML布局文件,然后从新产生这个R.java文件,比如你添加了新的资源到你的项目,你将会看到R.java也相应的改变了 最后重要的事情是你需要去修改你的HelloAndroid源代码,去使用新的XML布局你的界面。替换掉编码式的界面模式。下面是你的新代码的样子,你可以看到,代码变得更加简单了。
public class FirstAndroid extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first_android);
}
现在完成这些改变以后,你就可以重新运行你的程序,然后你会发现两种不同的界面编排方式会产生同样的效果。