1.5 Android应用实例

下面首先来介绍一个Android应用实例,让读者领略Android的应用。Android编程就是面向应用程序框架API编程——这种开发方式与编写普通Java SE应用程序并没有太大的区别,只是Android新增了一个API而已。

使用Eclipse开发Android应用非常方便,因为Eclipse会为我们自动完成许多工作。使用Eclipse开发Android应用大致需要以下3步骤:① 创建一个Android项目;② 在XML布局文件中定义应用程序的用户界面;③ 在Java代码中编写业务实现。

以上3步骤只是最粗粒度的归纳,下面以开发一个Hello World来介绍Android开发,实现步骤如下。

(1)在Eclipse主菜单下单击“文件”菜单下的“其他”选项,或单击工具条中的新建快捷键来创建一个Android应用项目。Eclipse弹出“选择向导”界面,如图1-31所示。

图1-31 “选择向导”界面

(2)选择图1-31中的“Android Application Project”选项,单击“下一步”按钮,弹出如图1-32所示的“New Android App”界面。

图1-32 “New Android App”界面

(3)单击图1-32中的“下一步”按钮,弹出如图1-33所示的配置发射器的图标颜色设置界面。

图1-33 配置发射器的图标颜色设置界面

(4)在图1-33中,选择默认值,然后单击“下一步”,弹出如图1-34所示的创建活动界面。

图1-34 创建活动界面

(5)在图1-34中选择默认值,单击“下一步”按钮,弹出如图1-35所示的新的空白活动界面,将“Layout Name”命名改为“main”,其他采用默认值,单击“完成”按钮,即可完成Android项目的创建。

图1-35 新的空白活动界面

Android项目创建完成后将看到如图1-36所示的项目结构。

图1-36 Android项目结构

Android项目的Layout目录下有一个main.xml文件,该文件用于定义Android的应用用户界面。在Eclipse工具中打开该文件,将看到如图1-37所示的界面。

图1-37 ADT提供的界面设计工具

在图1-37所示的界面的控件面板中向程序中拖入一个“Button”控件(按钮),再切换到源代码编写界面,main.xml文件代码修改为:

      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          android:layout_width="match_parent"
          android:layout_height="match_parent" >
          <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:text="@string/hello_world"
            tools:context=".MainActivity" />
        <Button
            android:id="@+id/OK"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/textView1"
            android:layout_below="@+id/textView1"
            android:layout_marginTop="82dp"
            android:text="单击这" />
      </RelativeLayout>

上面XML文档的根元素为:RelativeLayout,其代表了一个相对布局,在该界面布局中包含两个UI控件。

● TextView:代表一个文本框。

● Button:代表一个普通按钮。

在Android用户界面设计中,各种界面布局元素将会在后面进行详细介绍,不同UI组件也会在后面进行详细介绍。此处只说明UI组件上的几个通用属性。

● android:id:指定该控件的唯一标识,在Java程序中可通过findViewById("id")来获取指定的Android界面组件。

● android:layout_width:指定该界面组件的宽度。如果该属性值为fill_parent,则说明该组件与其父容器具有相同的宽度;如果该属性值为wrap_content,则说明该组件的宽度取决于它的内容——基本能包裹它的内容即可。

● android_height:指定该界面组件的高度。如果该属性值为fill_parent,则说明该组件与其父容器具有相同的高度;如果该属性值为wrap_content,则说明该组件的高度取决于它的内容——基本能包裹它的内容即可。

Android把用户界面放在XML文档中定义是因为:这样做可以让XML文档专门负责用户UI设置,而Java程序则专门负责业务实现,这样可以降低程序的耦合性。

Android项目的src目录是Android项目的源代码,该目录下有一个HelloWorld.java文件,其是Android项目的Java文件。打开该文件,代码修改为:

      package com.example.helloworld;
      import android.app.Activity;
      import android.os.Bundle;
      import android.view.View;
      import android.view.View.OnClickListener;
      import android.widget.Button;
      import android.widget.TextView;
      public class MainActivity extends Activity
      {
          //当第一次创建该Activity时回调该方法
          @Override
          public void onCreate(Bundle savedInstanceState)
          {
              super.onCreate(savedInstanceState);
            //设置使用main.xml文件定义的页面布局
            setContentView(R.layout.main);
            //获取UI界面中ID为R.id.ok的按钮
            Button bn=(Button)findViewById(R.id.OK);
            //为按钮绑定一个单击事件的监听器
            bn.setOnClickListener(new OnClickListener()
            {
                public void  onClick(View v)
                {
                    //获取UI界面中ID为R.id.show的文本框
                    final TextView show=(TextView)findViewById(R.id.textView1);
                    //改变文本框的文本内容
                    show.setText("Hello Android~"+new java.util.Date());
                }
            });
        }
      }

以上程序十分简单,其只做了3件事,即:①以该Activity使用main.xml文件定义的界面布局文件作为用户界面;②获取ID为R.Id.OK的按钮;③为第二步获得的按钮绑定事件监听器——在事件监听器的处理器方法中改变ID为R.id.textView1的文本框内容。

单击Eclipse界面中的“运行”按钮,或按F11键即可运行HelloWorld项目,效果如图1-38所示。

图1-38 运行程序效果