创建AVD:
运行Android程序需要用到Android AVD(Android Virtual Device),其用于模拟各个版本的Android设备,创建方法是点击Eclipse
工具栏靠近左上角的图标,会显示如下窗口:
可以看到本人已经创建好了几个版本的AVD实例。
点击右侧的“New”按钮可以创建新的AVD:
上面是创建一个1.5版本的AVD的时候填写的相应内容。
创建好AVD之后就可以使用Android的模拟器emulator将这个AVD启动起来,在上面的显示所有可用的AVD的图片中选中一个AVD
然后点击右侧的start->Launch就可以将其启动起来,2.2版本的启动起来后如下:
AVD与emulator的关系可以类比虚拟机文件与VmWare软件之间的关系,AVD文件只是一个配置文件和磁盘镜像,而emulator就像
VmWare软件一样是用来模拟相应系统的硬件平台的,可以用来运行对应的AVD文件(虚拟机文件)。
创建Android工程:
启动Eclipse之后,点击“File”->"new"->"Project",或者直接点击Eclipse工具栏左上角的
图标,会弹出如下窗口:
可以看到里面多了一个“Android”文件夹选项,选中其中的"Android Project"之后点击"Next", 会弹出如下窗口
在“Project Name”中输入工程名,我在这里使用的是“MyFirstProject”,在BuildTarget中勾选“Android 2.2”,
在Application Name, Package Name中分别输入你自己起的应用的名字和包名,在Create Activity中命名一个
Activity的名字(有关Activity我们会在后面的博文中详细讲述),一般情况下使用的是“MainActivity”,在Min SDK Verion
中填选支持的最小SDK版本,我们在上面勾选的是2.2,对应的这里就要填写8,需要注意的是根据最新的统计,搭载2.2和2.3
系统的终端已经占据Android终端的85%以上,而1.5和1.6平台的已经不足5%了,所以一般情况下可以从2.2开始支持,但是
也可以勾选1.5,编译出来的程序也是可以在高本版的平台上跑的,这样对应的Min SDK Verison就应该填写为3。
上面所说的都填写完之后点击“Finish”就创建好了我们的第一个Android工程,如下:
其中,src目录下就是我们的源代码,res目录下保存的是一些字符串和布局文件,图片之类的资源文件,AndroidManifest.xml中是清单文件,
下面我们详细讲解各个部分。
首先我们点击开源码目录中的MainActivity.java文件,其显示如下:
package com.alex.app.FirstProject;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
可以看到我们的MainActivity类是继承了Android系统的Activity类的,并且改写了其中的onCreate方法,在onCreate方法中除了调用超类的 |
Service,ContentProvider, BroadcastReceiver, 其功能分别是:
Activity:Activity是Android中最基本的组件,可以说每一个Activity就代表一个界面,上面可以布局有注入按钮,文本框之类的控件,例如一个
邮件客户端有一个屏幕用于显示收件箱列表,还有一个屏幕显示用于进行新建邮件等,每一个屏幕显示就被创建成一个独立的Activity。
可以使用startActivity()方法从一个Activity跳转到另一个Activity。
Service:一个Service是一个后台运行的程序,通常他是没有与用户交互的界面的,比如,背景音乐的后台播放。可以使用startService()或者
bindService()方法来启动或者绑定一个Service。
ContentProvider:Android每一个应用陈旭都运行在自己独立的进程中,进程相互之间的数据是无法共享的,ContentProvider就是为了解决这个
问题,使得不同应用之间可以共享数据。
BroadcastReceiver:主要用来接收一个广播,比如当电量低的时候系统会发出这个广播,让后你就可以在这个类中接受这个广播并进行相应的处理。
各个组件之间相互调用和跳转需要使用Intent类,该类定义了需要启动的组件的名称,动作和需要的参数之类的信息,现在你只要记住,Intent扮演的
是各个组件之间信使的角色就行了,今后对应的会有详细的讲解。
在res目录下是一些资源文件,包括字符串,图片等,其中有一类很重要的资源是layout目录下的布局文件,我们打开其中的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="@string/hello"
/>
</LinearLayout>
该文件声明了程序中使用的一些视图组件,这是Android一个比较大的突破,将这些组件从具体的代码中独立出来,将程序的表象层与控制层相分离,降低了程序
的耦合性,使得代码更灵活高效。
其中最外层的LinearLayout代表这是一个线性布局文件,android:orientation="vertical"说明这些组件 将被以竖排的方式显示, android:layout_width="fill_parent"
和android:layout_height="fill_parent"代表这个布局文件要覆盖整个父组件窗口。
<TextView/>标签代表这是一个显示文本的组件,可以用来显示一段话,其中前两个属性与上述类似,wrap_content的意思是其对应尺寸与其所包含的内容尺寸相同,
android:text="@string/hello"属性说明的是这个组件要显示的文本的内容,其中@string/hello的意思带表了values目录下的string.xml中定义的名为hello的字符串。
我们查看values目录下的string.xml文件其内容如下,包含了hello字符串。
1 <?xml version="1.0" encoding="utf-8"?> 2 <resources> 3 <string name="hello">Hello World, MainActivity!</string> 4 <string name="app_name">FirstProject</string> 5 </resources>
最后一个需要弄清楚的就是AndroidManifest.xml文件,这是一份清单文件,在所有项目中该文件的名字都不用改变,可以看成是Android工程的一个全局配置文件,我们
上述讲到的四大组件都需要在这个文件中进行声明才能够真正被使用(当然BroadcastReceiver是一个例外,我们今后会有讲解),其中还可以用来声明一些权限信息和SDK
版本信息。其内容如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.alex.app.FirstProject"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<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>
uses-sdk标签代表我们程序支持的SDK版本,application标签中进行所有的组件的生命,activity就是我们创建的Activity的声明,intent-filter是一个intent过滤器,说明的
如果想启动这个Activity需要的条件,其中
<action android:name="android.intent.action.MAIN" />代表这个Activity是程序的入口 <category android:name="android.intent.category.LAUNCHER" />代表在程序被加载时运行 以上就是有关Android程序的基本知识,点击Eclipse工具栏上的图标,选择“run as Application”就可以在这个虚拟设备上运行本程序,结果如下: