Andorid开发HelloWorld之旅
在搭建完Andorid开发环境之后,首先实现HelloWorld程序。
一、新建HellloWorld
打开配置好android开发环境的eclipse,new->other->Android Application Project,弹出如下对话框:
输入应用名字、工程名字、包名 、targetSdk等,然后默认一直next,在弹出如下activity对话框时:
输入相应的Activity Name及Layout Name,最后点击Finish,HelloWorld工程创建完成,初始目录结构如下:
PS:Android工程结构
src:源代码,我们的代码。
gen:Android开发工具所生成的文件,我们不能编辑这个文件。
R.java,标识程序中使用的各种资源。没有被此文件标识的资源,不会被打包到APK文件中。
assets:应用系统需要使用到的文件,比如mp3、视频...。这些文件会被原样打包到APK中。
res:资源目录,向此目录添加资源时,会被R.java自动记录。
drawabel-?dpi:图标文件(*.png、*.jpg)
layout:界面布局文件(main.xml)与WEB应用中的HTML类同
values:软件上所需要显示的各种文字。可以存放多个*.xml文件,还可以存放不同类型的数据。比如arrays.xml、colors.xml、dimens.xml、styles.xml...。
AndroidManifest.xml:项目的总配置文件,记录应用中所使用的各种组件。如果应用中使用到手机中的功能,需要在此声明使用权限。
default.properties:记录项目中所需要的环境信息,比如Android的版本等。
AndroidManfest.xml分析
manifest | 根节点,描述了package中所有的内容 |
xmlns:android | 包含命名空间的声明。 xmlns:android=http://schemas. android.com/apk/res/android,使得 Android中各种标准属性能在文件中使用, 提供了大部分元素中的数据 |
Package | 声明应用程序包 |
application | 包含package中application级别组件声 明的根节点。此元素也可包含application 的一些全局和默认的属性,如标签、icon、 主题、必要的权限,等等。一个manifest 能包含零个或一个此元素(不能大余一个) |
android:icon | 应用程序图标 |
android:label | 应用程序名字 |
Activity | 用来与用户交互的主要工具。Activity是用 户打开一个应用程序的初始页面,大部分 被使用到的其他页面也由不同的activity所 实现,并声明在另外的activity标记中。 注意,每一个activity必须有一个<activity> 标记对应,无论它给外部使用或是只用于 自己的package中。如果一个activity没有 对应的标记,你将不能运行它。另外, 为了支持运行时查找Activity,可包含一个 或多个<intent-filter>元素来描述activity所支持的操作 |
android:name | 应用程序默认启动的activity |
intent-filter | 声明了指定的一组组件支持的Intent值,从 而形成了IntentFilter。除了能在此元素下指 定不同类型的值,属性也能放在这里来描 述一个操作所需的唯一的标签、icon和其他信息 |
action | 组件支持的Intent action |
category | 组件支持的Intent Category。这里指定 了应用程序默认启动的activity |
uses-sdk | 该应用程序所使用的sdk版本相关 |
二、修改代码
程序的运行由主配置文件开始AndroidManifest.xml:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.helloworld" android:versionCode="1" android:versionName="1.0" > <!-- 本程序使用AndoridSDK的最低版本 --> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="21" /> <!-- @drawable/icon: @代表R.java drawable是R.java的静态内部类 icon是drawable的常量,指定图片资源的ID。 --> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <!-- .MainActivity指向package="com.example.helloworld"下面的MainActivity类。 我们可以在此添加子包.sub.xxxClass,但不能添加上级包。 --> <activity android:name=".MainActivity" android:label="@string/app_name"> <!-- 意图过滤,程序加载由此开始向外。 --> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
|
接下来从MainActivity类开始(新建class类集成activity,类名取于创建activity时的名字一致):
package com.example.helloworld; |
然后再我们再看看res->layout中的main.xml(初始没有,可以新建Android XML File):
<?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"> <!-- 文本视图控件 android:layout_width="fill_parent" ,它的父窗口是屏幕,所以宽度为整个屏幕。 android:layout_height="wrap_content" ,它的高度为它所包含的内容高度。如果内容中有一行,就是一行的高度。 android:text="@string/hello",它包含(显示)的文本内容,指向R.java中string静态内部类的常量hello所指向的文本资源ID,文本资源文件是strings.xml。 --> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello"/> </LinearLayout> |
再看看Strings.xml:
<resources> <string name="app_name">HelloWorld</string> <string name="hello">HelloWorld,Hello World!</string> </resources>
|
现在让我们看看掌管资源的主文件R.java:
R.java文件中的所有资源ID全部是自动生成的,我们不可以手动编辑。当我们添加一个图片时,ADT插件,会以图片的名称为常量的名称,然后自动生成对应的资源ID。当我们向strings.xml中添加一个字符串时,ADT插件会以符串的名称为常量的名称,然后自动生成对应的资源ID。
R.java文件不需要我们手动编辑,我们只需要在需要使用到资源的地方引用这个文件里标识的资源即可!
三、运行HelloWorld
出
现
Starting:
Intent
{
act=android.intent.action.MAIN
cat=[android.intent.category.LAUNCHER]
cmp=cn.itcast/.MainActivity
}
表示运行了。
这时观察模拟器,
既可以看到出现了不同。
表示模拟器已经正常运行,程序已经发布到手机上,此时模拟器如下图所示:
至此,HelloWorld之旅圆满结束!
表示运行了。
这时观察模拟器