第二部分:开发简要指南-第一章 Hello,World

第1章 Hello,World

作为一名开发者,我们学习一个平台的第一印象肯定都是写一个“Hello,World”。在Android上写一个“Hello,World”是很简单的,由于我们使用Eclipise IDE,它提供了ADT这么强大的插件,这样创建和管理一个项目就更简单了,可以大大缩短我们的时间。在开始之前,你应该确认你已经安装了SDK和ADT插件。本章会根据以下几个部分来讲述:

1. 安装一个平台(系统版本)

2. 创建一个Android虚拟机(AVD)

3. 创建一个项目

4. 构建一个用户界面

5. 执行代码

6. 升级界面为一个XML布局

7. 调试你的项目

1.1 安装一个平台(系统版本)

为了执行Hello World应用程序,你需要在你的SDK环境中安装至少一个Android平台版本。如果你已经安装了就可以跳过这一步,请注意根据你的实际情况下载最实用的平台版本,笔者自己下载的是1.6----2.1----2.2---2.3----3.0这五个版本的平台版本,请根据自己实际情况下载吧。如果你还没有下载过一个平台版本,在Eclpise请按照以下步骤执行:

1. 在Android SDK Manager 中,选择左边面板中的 Available Packages

2. 在右边面板,展开Android Repository列表显示一些可用的安装组件

3. 至少选择一个平台安装,点击Install Selected

1.2 创建一个Android虚拟机(AVD)

我们在第一大篇的开发入门中已经讲过,如何使用和管理AVD。在本章中,我们将在Android模拟器中执行我们的应用程序。所以在你启动一个模拟器之前,必须先创建一个AVD。创建步骤如下:

1. 在Eclipse中,选择Window > AVD Manager

2. 在左边面板选择Virtual Devices 

3. 点击 New...

然后来到Create New AVD对话框

4. 输入虚拟机的名字,我自己的虚拟机都是使用系统版本命名,例如“AVD2.2.

5. 选择一个target(Android SDK系统版本例如2.3.3)。然后本章为了简单,后面的字段就省略掉了

6. 点击 Create AVD.

1.3 创建一个新的Android项目

下面我们来创建一个新Android的项目,步骤如下:

1. 在Eclipse中, 选择 File > New > Project...

如果你的ADT插件安装正确,那么应该会显示出如图1-1的界面

 

图1-1 在Eclipse创建Android项目的截图

2. 选择"Android Project"然后点击Next
3. 按照以下步骤填写一些项目细节,如图1-2所示:

◆Project name: HelloAndroid

◆Build Target: 根据你虚拟机创建的系统版本来选择对应的Application name: Hello, Android

◆Package name: com.example.helloandroid (包名)

◆Create Activity: HelloAndroid(主Activity名)

 

图1-2 在Eclipse创建Android项目中填写相应的细节

这里我们讲以下Min SDK Version字段:当我们Build Target选择的是2.1(对应的API Level为7)时,这里应该填7或者低于7的版本,例如3或者4。切记不能填写高于7的。不然会有一些错误和隐患。我们的项目已经创建好了,然后我们在Eclipse左边的Package Explorer面板打开HelloAndroid.java文件,位于HelloAndroid > src > com.example.helloandroid。代码如下:

package com.example.helloandroid;

import android.app.Activity;
import android.os.Bundle;

publicclassHelloAndroidextendsActivity{
    /** Called when the activity is first created. */
    @Override
    publicvoid onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

 

 

代码清单1-1

注意我们的HelloAndroid是继承于Activity类的。一个Activity是一个单一的应用程序实体,用于执行动作。一个应用程序可能有许多个Activityies组成,但在某一时刻只有一个Acitvity与用户在交互。当你的Activity启动后,Android系统会调用onCreate()方法。你应该在这里执行一些初始化和UI设置的操作。一个Activity不需要有一个用户界面也能正确执行,但通常我们应该加一个基础的用户界面来显示一些东西,下面让我们来修改一些代码!

1.4 构建一个用户界面

同样在HelloAndroid 类中,改进了一下代码。下面的粗体就是我们新添加的。

package com.example.helloandroid;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloAndroid extends Activity {
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       TextView tv = new TextView(this);
       tv.setText("Hello, Android");
       setContentView(tv);
   }
}

 

代码清单1-2

一个Android用户界面是由Views的对象层次结构组成的。一个View是一个可绘制的对象,并当做一个UI布局元素,例如一个按钮,图片或者此处TextView(文本标签)。每一个UI元素的都是一个View,它们都直接或间接继承与View类。这里我们创建一个TextView对象,需要传一个Context实例对象。Context用于处理与系统相关的一些操作,例如解决资源调用,获得访问数据库的一些接口和首选项等。Activity 类继承自Context,所以这里可以直接传”this”。接下来我们需要使用setText()来设置文本的内容。最后我们需要通过setContextView()把TextView添加到我们当前的Activity界面中。如果你没有调用setContextView(),那么系统不会显示这个TextView,而是显示一个背景全黑的空白屏幕。

好的,”Hello,Android”的项目代码已经写好了,接下来我们需要执行它了。

1.5 执行应用程序

由于在Eclpise中有插件,我们执行它很容易,并且方法有很多种,这里我们可以在项目上点击鼠标右键->选择Run As->Anroid Application

Eclipse插件自动为您的项目创建一个新的运行配置文件,然后启动Android模拟器。根据您的环境,Android模拟器可能需要几分钟才能全面启动完毕,所以请耐心等待。当启动完毕后,Eclipse插件会安装应用程序,并启动默认的Activity。显示效果如图1-3所示:

 

图1-3 在Eclipse中使用模拟器启动Hello,Android后的截图

在应用程序灰色栏中看到的“Hello,Android”实际上是应用程序的标题。创建项目时,Eclipse插件会自动创建res/values/strings.xml。然后再AndroidManifest.xml会引用strings.xml中的标题字段。标题下面的文字,才是我们在代码中写的TextView。虽然“Hello World”已经写完了,但是你可以继续阅读项目中其他有价值的信息。

1.6 升级界面为一个XML布局

在 "Hello, World" 例子中我们使用的是代码布局。如果你是位经验丰富的的UI程序员,你可能熟悉这种做法是非常脆弱的:布局中的微小变化可能导致大量代码的改动,并且很容易与之忘记相关的其他View,这会导致你的布局错误并且浪费大量时间在调试。因此Android提供了一种基于XML布局文件来代替用代码写布局的模式。下面让我们来举一个例子,跟上面的“代码清单1-2”一样的效果,我们不使用代码布局一个TextView,而使用以下的XML文件来代替:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/textview"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:text="@string/hello"/>

 

这是一个简单的Android XML布局文件结构:它是一个树节点,其中每个节点都是一个View。我们使用的元素都是继承自View类的,TextView是Android已经写好的一个View,当然我们也可以在代码自定义View。这种结构可以很容易的快速建立用户界面,比起代码布局,它使用更简单的结构和语法。在上面的XML布局文件中只有一个TextView节点,但这里用到了几个属性。如表格1-1所示:

属性

描述

xmlns:android

这是一个XML命名空间声明,告诉Android的工具,你会引用在Android命名空间中定义的共同属性。在每一个Android的布局文件的最外层标签必须有此属性。

android:id

该属性指定一个TextView元素的唯一标识符。您可以使用分配的ID从源代码中引用它。

android:layout_width

该属性定义了这个View需要占用的宽度,“fill_paren”表示占用父节点的全部宽度,这里的父节点即屏幕。

android:layout_height

和宽度类似,表示高度

android:text

这设置TextView中应显示的文字。在这个例子中,我们使用的是硬编码的字符串值,而不是引用的一个字符串资源。当然更好的做法是引用在res/ strings.xml文件定义的hello字符串。因为这样符合国际化。这里为了简单起见我们暂用硬编码。

表格1-1 XML中节点的属性

这些XML布局文件被放置在你工程的res/layout/ 目录下。”res”代表资源,该目录包含所有的非代码资源,除了布局文件夹,还包括图像,声音,本地化字符串等。

Android默认的布局方式是纵向布局,在多屏幕多分辨那章,笔者已经介绍过了,这里我们的xml是放入layout/下的,layout就是默认的纵向布局,如果你吧手机横向放置,android就会显示横向的布局,由于我们没有在layout-land下放入布局文件,所以它会直接的在纵向布局下拉伸,当然这里只是一个小提示,真正做好一个项目,这些细节是必须考虑的。这里为了简单起见,我们就让他拉伸吧。Eclipse插件在我们新建项目的时候就在res/layout/下创建了一个main.xml的布局文件。我们在“代码清单1-2”中是没有使用这个main.xml布局文件的。

现在让我们重新修改一下”代码清单1-2”,如“代码清单1-3”所示

package com.example.helloandroid;

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);
    }
}

 

代码清单1-3

我们放弃了,“代码清单1-2”中的代码生成View的方式,转而使用“代码清单1-3”XML布局文件,你会发现仅仅一行就搞定了,接下来让我们看看R类(俗称R文件)。在Eclipse中的项目中的gen/下找到我们的R.java。代码如下

package com.example.helloandroid;

public final class R {
    public static final class attr {
    }
    public static final class drawable {
        public static final int icon=0x7f020000;
    }
    public static final class id {
        public static final int textview=0x7f050000;
    }
    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;
    }
}

 

代码清单1-4

一个项目中的R文件都是用来保存所有资源的引用,代码中如果要引用资源文件就是使用R文件引用他们的ID。此文件请不需要修改,当你有资源复制到项目中时,他会自动生成资源的引用ID。

1.7 调试你的项目

当然调试是必不可少的,Eclipse中的Android插件与Eclipse的调试器良好的集成在一起。为了证明这一点,下面我们来看“代码清单1-5”

package com.example.helloandroid;

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);
        Object o = null;
        o.toString();
        setContentView(R.layout.main);
    }
}

 

代码清单1-5

在你的代码中引入一个空指针异常,然后你会在模拟器中看见如图1-4的效果。

 

图1-4 Android设备中出现空指针异常

我们可以在Object o = null;这一行设置一个断点(双击旁边的代码行),然后右键选择Run - > Debug As - > Android Application。然后运行调试模式,并会在断点处停下来。然后进入调试界面,你可以鼠标悬停或者观察右上角中变量的值,如图1-5所示:

图1-5 Android调试界面截图

完整项目下载链接:http://url.cn/TidNvn

本文来自jy02432443,QQ78117253。转载请保留出处,并保留追究法律责任的权利

posted @ 2012-05-29 18:49  jy02432443  阅读(3488)  评论(2编辑  收藏  举报