`
wc0903
  • 浏览: 80786 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

第五章 应用:Hello World!——上

阅读更多

关键技能和概念

l        创建新的Android工程。

l        使用视图

l        使用文本视图

l        更改main.xml文件

l        Android模拟器上运行应用

本章中,你会创建第一个Android活动。本章从头到尾研究了应用构建过程。我会给你介绍如何在Eclipse中创建一个Android工程,如何往初始化文件中添加代码,如何在Android模拟器中运行最终的应用。最终应用是运行在Android环境上的全功能的程序。

实际上,当你过完本章,你会创建不止一个Android活动。计算机编程传统证明你的第一个应用一定是Hello World!类型的应用,所以在第一节中你会创建一个标准的Hello World!应用,仅仅是一个空白的背景和“Hello World!”文本。然而,为了使你更好的了解这门语言起见,下一节将详细解释Android是如何自动创建Hello World!应用的。你将创建该活动的两项迭代,每种都是用不同的技术向屏幕输出信息。你也将创建两种不同版本的Hello World!应用,通过图片来展示Hello World!信息。现在就给你介绍Android的控制和内部工作原理。

为了确保你仔细的浏览了Android的编程方式,在第六章,还会分别在Microsoft WindowsLinux平台上通过Android SDK的命令行,为你创建这两种应用。换句话说,本章涵盖在Eclipse中的创建步骤,第六章涵盖在命令行中的创建步骤。因此,在继续之前,你应该检测一下你的Eclipse环境是否正确配置。温习第三章中为Android SDK设置PATH声明的步骤。你应该确保你的JRE确实在PATH声明中。

Eclipse创建首个Android项目

启动Eclipse,创建第一个Android项目。当你首次打开Eclipse时,会打开一个默认的开发环境(参照图5-1),也就是你的起步点。你的第一个任务就是为你的应用安装和命名workspace。选择File|New|Android Project,启动New Android Project向导。

5-1默认Eclipse开发环境

New Android Project向导为你创建两项:

l        一个利用android.jar文件与Android SDK绑定的shell应用,将项目绑定到Android模拟器上。这可以使你编码时利用全部Android库和包,也可以让你在稳定的环境中调试你的应用。

l        新项目的shell文件。这些shell文件包含一些虚拟的应用,这取决于你在程序中构建什么。这与在Visual Studio中创建Microsoft .NET应用的方式大抵相同,生成一些windows平台创建的程序代码,利用Eclipse中的Android 项目向导生成你的初始化程序文件和创建Android的代码。

一般来说,新建Android项目向导包含一些选项,下一步提示,你必须设定以初始化你的Android项目。

Project Name表单域,本例中用HelloWorldText做标题。该名字以便跟HelloWorld!项目中创建的其它名称明显区分开。

在内容域,默认选择:选中Create New Project in Workspace单选按钮和User Default Location多选按钮。这会使Eclipse在默认的workspace目录中创建项目。保持默认选项的好处是,可以使你的项目保存到中心位置,以方便定制,管理和寻找这些项目。例如,如果你在基于Unix的环境中开发,该路径指向你的$HOME目录。如果你在Microsoft Windows的环境中开发,workspace路径会是c:/Users/<username>/workspace,如前面所示。

然而,处于某种原因,你可能不会选中User Default Location多选框,并为你的项目选择不同的位置,你可能会定制不同位置的原因仅仅是,你想为个别项目选择一个位置,以便与其它Android项目区分开。例如,你可能会将你在本书中创建的项目与以后你自己创建的项目保存到不同的位置。如果这样,只要跳Location选项,为你的项目定制个性化的位置目录即可。

另一方面,当安装Eclipse(如第二章的最后一节所述)时,在Select a Default Workspace对话框中,如果你不选中Use This as the DefaultDo Not Ask Again多选框,你可能需要定制一个项目位置。在Eclipse安装时选中该框,会将所有新项目默认到该workspace目录(默认位置在Location field of the New Android Project向导中会找到)。在Eclectic安装过程中,你没有选中选择框,你需要跳过点击浏览按钮找到目录,为你的新项目选择一个路径。

New Android Project向导中的最后三项再属性域。这些属性定义了项目如何集成到Android环境的方式。在Package Name表单域,你可以为你的应用包自定义命名空间。例如,android.app.Activitycom.google.android.map.MapActivity

对于HelloWorldText应用,使用的包名是android_programmers_guide.HelloWorldText 为你的引用代码标识独一无二的名字可以将本书中你开发的测试应用和其它应用区别开。

在下一个的属性域,Activity Name,是必填项,因为它是你应用的主屏的参照。也就是说,将Activity当做是程序显示的“窗口”。没有Activity,你的应用就无可奈何。然而,因为Android应用可以由几个Activity组成,新建Android工程想到需要知道哪个是默认的ActivityActivity Name也是一个必填域,并且没有默认值,所以你必须填一个才能继续。由于是做例子,所以使用了HelloWorldText。这样可以在必要的时候,使作为描述性的应用简单一些。

最后的属性域,Application Name,定义引用的名字。这个名字用来管理你的应用,当它安装到设备上时。为了简单起见,我们再次用HelloWorldText作为应用名。下面的图例展示了完整的New Android Project向导。

点击Finish结束创建过程。向导即启动后台进程,配置自动生成的必要文件,安装支持Android应用项目的目录结构。当进度完成时,你就拥有了你的第一个Android 应用项目,如图5-2所示。

5-2 你的首个Android应用项目

下面的章节研究自动生成的Android文件内容和一些shell文件在应用中的功用。

 

研究Android生成文件

 

本章研究Android为你生成的新文件,如果你不知道你要看什么,你可能会在你不应该放代码的地方写代码。有些Android生成的文件需要修改,但有些你不需要修改,了解这些差别,可能会让你避免重建项目。

打开新的应用项目,看看Package Explorer,即开发主面板的左侧标签。下面展示Package Explorer的样子。

HelloWorldText例子中,你会看到一个根目录。根目录是你所有项目文件的家或者库。用户创建的文件和Android自动生成的文件都放在这个目录下,从Package Explorer很容就就可以访问到。目前,你的根目录中会有几项:一个AndroidManifest.xml文件,一个包含引用库的包,以及三个目录(resassetssrc)。下面研究这三项:

 

AndroidManifest.xml

AndroidManifest.xml文件你是做全局设置的地方。如果你是一个ASP.NET开发人员,你可以把AndroidManifest.xml文件当成Web.configGlobal.asax的合成体。(如果你不是ASP.NET开发人员,对你来说AndroidManifest.xml文件就是一个存储配置的地方。)AndroidManifest.xml文件包括一些配置,如应用权限,活动和集中过滤器。

标准的AndroidManifest.xml文件包括以下的信息:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android=http://schemas.android.com/apk/res/android package="testPackage.HelloWorldText">

 <application android:icon="@drawable/icon">

  <activity class=".HelloWorldText" android:label="@string/app_name">

   <intent-filter>

    <action android:value="android.intent.action.MAIN" />

    <category android:value="android.intent.category.LAUNCHER"/>

   </intent-filter>

  </activity>

 </application>

</manifest>

如果你将来创建应用,你会在这个文件中添加信息。注意列表中提供的包名和Activity处理的活动。

引用库

项目根目录中也包含了一个应用库列表。对于新项目,通常情况下,你会在这里看到一个库。展开引用库的分支,仔细查看它的内容和你在项目中引用的库。鉴于它是一个新的Android项目,你会在你的项目引用中看到一个库,android.jar,即Android SDK。(如果你熟悉JAVA SDK,android.jaba类似于Javart.java文件,在rt.java中包含了很多Java API。)Android插件能保证你的应用拥有唯一的引用库文件。应用需要引用SDK来访问SDK库中包含的所有类,如视图,控制和GoogleAPI

目录

项目根路径中也有三个根目录——resassetssrc——每个都有鲜明的功用。这些目录成了你的应用程序操作的组成部分。

res目录

res目录用来保存和编译你的项目资源的地方。当你创建了一个新的Android项目,res目录包含了三个子目录:drawablelayoutvalues。你会在项目中使用drawablelayout目录分别保存和展示图片和层,而values目录则保存字符串的项目中使用的全局变量。Drawable目录包含你的项目会使用和引用的实际图片文件。Layout目录拥有一个XML文件,main.xml,当构建接口时你的应用可以引用。本书的大部分应用,你都会编辑layout目录下的main.xml文件。它允许你向应用的可见层插入视图,并进行展示。原始的main.xml文件包含下面的代码:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android=http://schemas.android.com/apk/res/android android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent">

<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello World, HelloWorldText"/>

</LinearLayout>

Res下面的最后一个目录values,拥有一个名为stringsXML文件。这个string.xml文件用来保存应用所引用的全局字符串变量。

assets目录

assets目录用来保存原始的资源文件。在assets目录的文件可能包含流媒体和动画资源的音频文件。本书的应用中我没有用到任何音频资源,因为Android模拟器的音频驱动测试版还没有优化。

src目录

src目录包含你的所有项目源文件。当你的项目刚创建时,它会包含两个文件,R.java<activity>.java(本例中是HelloWorldText.java,如下描述:

R.java文件  R.java是由Android插件为你的应用自动生成的文件。文件包含了指向drawablelayoutvalues目录的指针(或者目录中的文件,如字符串和图标)。你不需要直接更改这个文件。在大部分应用中都会引用R.javaHelloWorldText应用自动生成的代码如下:

/* AUTO-GENERATED FILE. DO NOT MODIFY.

*

* This class was automatically generated by the

* aapt tool from the resource data it found. It

* should not be modified by hand.

*/

package testPackage.HelloWorldText;

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;

}

}

<activity>.java文件  src目录中你会花大量时间接触的文件是<activity>.java,它也是由Android插件创建的,并且和在新建Android项目向导中命名的Activity名字一致。不像本书中其它你所研究的文件,该文件是完全可以编辑的,实际上,如果你不更改它的代码,基本上是没有用的。

在简单的浏览HelloWorldText.java文件中的Android插件创建的内容之后,你就可以编辑该文件,创建你的第一个Android Activity

package android_programmers_guide.HelloWorldText;

import android.app.Activity;

import android.os.Bundle;

public class HelloWorldText extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

setContentView(R.layout.main);

}

}

文件的前三行代码是标准的预处理指令——也就是,如大部分编程语言一样,在程序运行之前给编译器的发送指令的声明。本例中,你已经定义和包含了你的android_programmers_guide.HelloWorldText包。

下面两行是通过android.jarAndroid SDK引入的特定的包:

import android.app.Activity;

import android.os.Bundle;

这些行在应用的所有代码之前,告诉项目去包含引入包的所有代码。这两行对你的基础 Android应用来说非常重要,不能被移除。

现在把注意力集中到你的HelloWorldText类上,你可以看到它扩展了Activities类。Activity在前面的代码中被引入。所有应用都继承Activity类,这种依赖对于运营在Android上的应用非常必要。屏幕上运行和战士的内容,都是从Activity派生出来的。

HelloWorldText类拥有需要创建,展示与运行应用的代码。现在你的HelloWorldText类中只定义了一个方法,onCreate()

onCreate()方法捆绑了icicle。也就是说,当前所有状态信息都绑定成一个icicle对象存储到内存中。在应用中你不会处理icicle,但是你需要它的存在和功用。

文件中的下一行才真正的做了一些动作:

setContentView(R.layout.main);

setContentView()方法将Activity的内容设定到指定的资源上。本例中,我们通过R.java文件中的指针,使用layout目录下的main.xml文件。Main.xml文件,现在仅仅包含了HelloworldText屏幕的大小和一个TextViewTextView是由View派生的,用来在Android环境中展示文本。浏览main.xml中的内容,你会看到它包含下面一行。

android:text="Hello World, HelloWorldText"

考虑到setContentView()方法把main.xml看做当前的View,并且main.xml中包含了一个TextView输出“Hello World, HelloWorldText!”,可以假定,编译和运行HelloWorldText可以为你实现Hello World应用。为了证明这一点,运行你的原始HelloWorldText应用。选择Run|打开 Run As 对话框,选择Android Application,然后点击OK

你刚创建的项目包括了自动创建HelloWorld!应用的代码。然而,这并没多大作用,至少没有过多地教你编写Android应用。你需要剖析项目,仔细研究项目是如何展示“Hello World!”信息的。

当你创建新的Android项目时,Android插件更改了main.xml文件。这是个用来修改Android UI方式的非常完美的例子。当项目创建时,下面的代码加进了 main.xml中。

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Hello World, HelloWorldText"

/>

虽然我已经提过过xml中存在TextView,但我还没说明没有任何相关代码它如何会工作的原因。在本书前面中我提过有两种设计Android UI的方式:通过代码和通过main.xml文件。前面的代码示例在xml中创建了一个TextView,并将文本设置为“Hello World, HelloWorldText”。如下编辑main.xml中的这一行:

android:text="This is the text of an Android TextView!"

返回项目,你的更改结果会如图所示。

花些时间,试验xmlTextView,然后你就会发现有另一种创建HelloWorld!应用的方式。

(未完待续。。。。。)

  • 大小: 14.3 KB
  • 大小: 26.2 KB
  • 大小: 29.2 KB
  • 大小: 29.5 KB
  • 大小: 8.6 KB
  • 大小: 13.8 KB
  • 大小: 19.3 KB
  • 大小: 21.2 KB
  • 大小: 29.3 KB
  • 大小: 2.5 KB
  • 大小: 11.7 KB
  • 大小: 21.1 KB
  • 大小: 24.7 KB
  • 大小: 25.7 KB
0
0
分享到:
评论

相关推荐

    单片机应用系统设计技术——实验1:仿真第一个程序Hello World!

    Proteus7.8+Keil5——仿真第一个程序Hello World下载Proteus7.8和Keil5这里我采用的是C代码运行结果如下`注意`:“`Proteus里面的C51单片机的晶振要设置成11.0592,否则Virtual Terminal会运行不出结果“` ...

    SCDM脚本开发入门教程

    该教程主要介绍SCDM脚本开发技术,适合有Python代码开发和SCDM使用基础的人员学习使用 1. SCDM 概述 2. 第一个 Hello,World 程序 ...第五步: 修改脚本——高亮显示后还原原来颜色 第六步: 保存发布脚本 10. 小结

    从零开始学JavaScript 源代码

    第5章 文档对象模型(DOM) 第6章 String、Math、Array等数据对象 第7章 Window及相关顶级对象 第8章 Document对象 第9章 HTML元素对象 第二篇 JavaScript进阶篇 第10章 正则表达式 第11章 客户端与服务器端通信 第...

    JBoss ESB 学习笔记

    6——第五个ESB代码Custom Action 51 7——第六个ESB代码Http Gateway 63 8——第七个ESB代码Https Gateway 74 9——第八个ESB代码JMS Router 83 10——第九个ESB代码JMS Topic 91 11——第十个ESB代码Message ...

    云应用开发 ——Google App Engine & Google Web Toolkit入门指南

    6.2.2 实例——Servlet版本HelloWorld 第7章 数据操作 7.1 概述 7.2 定义数据类 7.3 创建,获取和删除数据 7.4 查询和索引 7.5 事务 7.6 关系 7.7 实例——员工管理系统 第8章 国际化 8.1 普通文本国际化 8.2 ...

    jboss-as-7.1.1.Final

    EJB3.1 JBoss7.0.2 EclipseJuno-helloworld实现 2013-01-06 02:59:54 分类: Java EJB3.1 JBoss7.1 Eclipse3.7---helloworld实现 一、环境配置: JDK:正常配置 Eclipse:正常下载,解压(V3.7) JBoss:正常下载,...

    《Google Android开发入门与实战》

    第5章 千里之行始于足下——第一个应用HelloWorld 第7章 良好的学习开端——Android基本组件介绍之我的美丽我做主——Android中应用界面布局 第7章 良好的学习开端——Android基本组件介绍之不积跬步无以至千里——...

    Linux编程从入门到精通.rar

    第10章 把应用程序移植到Linux上 —————————————— 第四部分 Linux内核概念系统结构 第1章 系统结构 第2章 子系统的系统结构 第3章 结论 336 ------------------------\ 第五部分 Linux内核具体系统结构...

    解析Google Android SDK——智能手机开发范例手册.rar

    第2章 Android之HelloWorld 第3章 认识可爱的UI 第4章 应用资源 第5章 数据存储 第6章 蓝牙 第7章 Android与Internet 第8章 Android搜索框架 第9章 安全和权限 第10章 应用小部件 第11章 Android常用程序开发 第12章...

    visual c++6.0技术内幕 带有NLC的文件查看器

     第3章 用AppWizard开始——“Hello,world!”  第4章 基本事件处理、映射模式和滚动视图  第5章 图形设备接口、颜色和字体  第6章 模态对话框和windows通用控件  第7章 非模态对话框和Windows通用对话框  第8...

    Extjs教程源码

    第一讲: EXTJS4.0概述和HelloWorld程序 第二讲: EXTJS4.0的新特性 第三讲: EXTJS4.0数据模型——Model 第四讲: EXTJS4.0的数据代理——Proxy 第五讲: EXTJS4.0的读写器Reader, Writer 第六讲: EXTJS4.0的数据集Store...

    入门经典教程<<易学C++>>

    3 1.7 总结 3 第2章 Hello,World 4 第3章 各种各样的“箱子”——变量 12 第4章 要走哪条路——条件语句 20 第5章 有个圈儿的程序——循环语句 36 第6章 好用的“工具”——函数 51 第7章 好大的...

    struts项目搭建

    二、第一个Struts 2.0应用程序——Hello World 下面我们进行臭名昭著的Hello World程序。几乎所有语言的第一个程序都是Hello World。在src目录上右键,新建一个类,参数如下: 类的内容如下: package ...

    易学C++高清完整pdf版

    第5章 有个圈儿的程序——循环语句 36 第6章 好用的“工具”——函数 51 第7章 好大的“仓库”——数组 69 第8章 内存里的快捷方式——指针 84 第9章 自己设计的箱子——枚举和结构 98 第二篇 实战程序...

    易学C++ 含源代码

     第5章 有个圈儿的程序——循环语句 36  第6章 好用的“工具”——函数 51  第7章 好大的“仓库”——数组 69  第8章 内存里的快捷方式——指针 84  第9章 自己设计的箱子——枚举和结构 98  ...

    易学C++[C++著名的基础书籍潘嘉杰著]

    3 1.7 总结 3 第2章 Hello,World 4 第3章 各种各样的“箱子”——变量 12 第4章 要走哪条路——条件语句 20 第5章 有个圈儿的程序——循环语句 36 第6章 好用的“工具”——函数 51 第7章 好大的...

    c#入门经典范例50讲

    第42讲 Web应用程序“Hello world!” 第43讲 验证Web输入 第44讲 在Web页面中显示XML 第45讲 在Web页面中显示数据库 第46讲 更新Web页面的数据库 分布式应用程序开发 第47讲 XML Web Services 第48讲 分布式应用...

    android开发入门与实战(上)

    第5章 千里之行始于足下——第一个应用HelloWorld 5.1 HelloWorld应用分析 5.1.1 新建一个Android工程 5.1.2 填写工程的信息 5.1.3 编程实现 5.1.4 运行项目 5.2 调试项目 5.2.1 设置断点 5.2.2 Debug项目 5.2.3 ...

    展现C#

    第五章类——C#功能真正强大的标志,它是具有类的面向对象的编程。你会学到好多好多的东西,如构造函数、析构函数、方法、属性、索引和事件等。第六章控制语句——对应用程序实行流程控制。探索C#提供的各种选择和...

Global site tag (gtag.js) - Google Analytics