`
wc0903
  • 浏览: 81932 次
  • 性别: 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
分享到:
评论

相关推荐

    Hello,World!

    "Hello, World!" 是编程世界的传统起点,是...尽管每种语言的语法和实现方式不同,但目标都是相同的——在屏幕上显示 "Hello, World!"。学习这些示例有助于理解编程语言的基础概念,包括变量定义、输出功能和控制流程。

    最佳QT教程--我见过最好的教程

    第五章:组装积木 —— 介绍了如何使用 Qt 的容器类管理用户界面组件。 第六章:组装丰富的积木! —— 介绍了如何使用 Qt 的布局管理器和容器类创建复杂的用户界面。 第七章:一个事物领导另一个 —— 介绍了如何...

    用MTC89c51控制LCD1602屏使其第一行显示“lLOVE MCU”字样,在其第二行显示“Hello World! ”字样

    在本文中,我们将深入探讨如何使用MCS-51系列的单片机——MTC89C51来控制LCD1602显示器,以显示特定的文本内容。LCD1602是一种常见的液晶显示屏,通常用于嵌入式系统中的数据显示,具有16列和2行的显示能力。我们将...

    Hello World! Computer Programming for Kids and Other Beginners

    《Hello World! 计算机编程入门指南》一书旨在为儿童和其他初学者提供一个轻松、有趣且易于理解的计算机编程学习平台。本书由Warren Sande与Carter Sande共同编写,Manning出版社出版,是一本PDF格式的电子书籍。在...

    Vue预习课2:Hello World 第一个程序

    本课程的核心是通过“Hello World”实例来引导初学者理解Vue的基本概念和设计思想。 首先,让我们从“Hello World”程序开始。这是每个开发者学习新语言或框架时的入门步骤。在Vue中,创建“Hello World”程序非常...

    JAVA程序教学设计: JAVA基本语法——商场购物清单打印.doc

    - 字符串常量:用双引号括起,例如"HelloWorld"。 - 布尔常量:true和false。 - null常量:表示对象引用为空。 6. **变量**: - 变量是存储数据的内存单元,如`int x = 0, y;`定义了两个变量x和y。 - 数据类型...

    一分钟“掌握”常见编程语言

    在编程世界中,"Hello World!" 是初学者入门时最常遇到的第一个程序,它标志着编程旅程的开始。本文将深入探讨这些常见编程语言——Python、Java、C、Matlab、JavaScript、PHP 和 Swift,如何通过简单的代码实现这个...

    HelloWorldApp_hellowword_world_

    标题中的"HelloWorldApp_hellowword_world_"暗示了一个经典的编程入门示例——“Hello, World!”程序。这个程序通常在初学者接触新编程语言时使用,以展示如何编译、运行一个简单的程序并打印出“Hello, World!”这...

    学通C语言的24堂课高清PDF及光盘内容

    - **第5堂课:流程控制** —— 介绍条件语句(if-else)和循环语句(for、while、do-while)的使用。 3. **函数** - **第6堂课:函数定义与调用** —— 解释函数的作用、定义方法,以及参数传递机制。 - **第7堂...

    Fortran 入门教程之Hello world.pdf

    ### Fortran 入门教程之Hello world ...至此,您已经成功编写、编译并运行了第一个Fortran程序——“Hello, World!”。这不仅标志着您对Fortran的基本了解,也为进一步学习和探索更复杂的程序打下了坚实的基础。

    张志晨老师之《则表达式去空格》

    在JavaScript等编程语言中,正则表达式被广泛应用于字符串的操作上。 ##### 2. 去除字符串两端空格 在给定的代码片段中,`str.replace(/^\s*|\s*$/g,"")` 这一行是用来去除字符串首尾空格的。 - **^\s***:匹配...

    package-helloworld:Hello World 简单包

    至于压缩包子文件的文件名称列表——"package-helloworld-master",这很可能是一个Git仓库的主分支(master)的克隆。在GitHub等代码托管平台上,"master"通常是默认的分支,包含了项目的最新稳定代码。因此,下载的...

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

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

    程序员的第一课.txt

    在命令行中输入`java HelloWorld`,此时屏幕上就会显示出`Hello, World!`。 #### 五、理解“Hello, World!”程序的关键概念 通过上述过程,我们可以了解到以下几个关键概念: 1. **类和对象**:Java是一种面向对象...

    Linux学习系列二:运行Hello World .pdf

    本文是“Linux学习系列”的第二篇,旨在深入探讨如何在Linux环境下运行一个经典的入门程序——“Hello World”。第一篇文章《Linux学习系列一:开发环境搭建》受到了广泛关注,激发了许多读者的兴趣。本篇将继续沿着...

    helloworldkotlin:Hello world和使用Kotlin的一些随机功能

    在编程世界中,"Hello, World!"程序是每个新手程序员的第一个里程碑。Kotlin,作为一款由JetBrains开发的现代、类型安全的编程语言,已经逐渐成为Android开发的首选语言。这个名为"helloworldkotlin"的项目,正如其...

    国王MM-无和谐生活的喜悦-第1部分,PIC32MM“ Hello World!”

    在这个第一部分中,作者可能引导读者通过编写第一个简单的程序——"Hello World!"来介绍该平台。 描述中的“使用C++和汇编语言对Microchip PIC32MM单片机进行编程”表明教程涵盖了两种编程语言:C++和汇编。C++是一...

    android应用开发详解 郭宏志编著 pdf格式

    **第五章:Android基本程序单元Activity** - **Activity生命周期**:详解Activity的各个生命周期状态及其回调函数。 - **启动模式**:解释四种不同的启动模式(standard、singleTop、singleTask、singleInstance)...

    csapp大作业hello的自白——hello程序的一生

    #### 第5章:链接 - **链接的概念与作用**: - 链接是将多个目标文件和库文件合并为一个可执行文件的过程。 - 这一过程还负责解决符号引用等问题。 - **在Ubuntu下链接的命令**: - 使用命令`gcc hello.o -o ...

    COMP107x:Hello World-Android应用程序

    标题中的"COMP107x: Hello World-Android应用程序"是指一个在线课程,该课程主要教授如何开发Android平台上的基础应用程序。"Hello World"通常是一个编程初学者接触的第一个程序,它标志着新学习者向编程世界的初步...

Global site tag (gtag.js) - Google Analytics