在安裝后 Android 開發(fā)環(huán)境和創(chuàng)建好 Android 模擬器之后,就可以開始寫第一個(gè) Android 應(yīng)用“Hello,World”。后面的例子均采用 Eclipse IDE。 安裝 ADT plugin 之后,創(chuàng)建的新項(xiàng)目種類就會(huì)增加一個(gè) Android Project 類型:
http://wiki.jikexueyuan.com/project/android-development-tutorial/images/5.png" alt="" />
選擇 Android Project 項(xiàng)目類型,出現(xiàn)下面對(duì)話框:
http://wiki.jikexueyuan.com/project/android-development-tutorial/images/6.png" alt="" />
Project Name : Hello World
Build Target: 這里選擇 Android 1.6 ,如果你的 Build Target 列表為空,則表示你忘記設(shè)置Android SDK 安裝目錄了。可以通過 Windows -> Preferences -> Android 來設(shè)置 SDK 路徑。
Application Name: Hello World
Package name: com.pstreets.android.example, 如果您開發(fā)過 Java 或是 .Net Framework 應(yīng)用,包名稱并不陌生。
Create Activity: HelloWorld。 Activity 是 Android 平臺(tái)中特有的一個(gè)新概念。以 Java ME或是 Windows Mobile CE 應(yīng)用作參考,它類似于 Java ME 和 Windows Mobile 中 UI 類的 Form類。
Min SDK Version: 可以為空。 Android 平臺(tái)的版本比較多,從1.5到目前的3.0。Android 平臺(tái)支持向下兼容。Min SDK Version指出了您開發(fā)應(yīng)用支持的最第版本。4對(duì)應(yīng)于 Android 1.5。
點(diǎn)擊“Finish”則在 Eclipse 的 Workspace 中創(chuàng)建了“Hello World”項(xiàng)目:
http://wiki.jikexueyuan.com/project/android-development-tutorial/images/7.png" alt="" />
ADT Plug 自動(dòng)創(chuàng)建了幾個(gè)目錄:
src 應(yīng)用源碼目錄
gen Android 應(yīng)用自動(dòng)生成的代碼,主要是根據(jù) Android 資源目錄 res 下的資源來生成的,這樣可以根據(jù)資源 ID 來訪問應(yīng)用中的資源。一般不建議手工改動(dòng),即使改動(dòng),下次編譯時(shí)也會(huì)被重新覆蓋。
Android 1.6 表示當(dāng)前選擇的 Android 版本是 Android 1.6,你可以使用 Android 1.6 中提供的API。可以通過項(xiàng)目的屬性來修改 Android 版本。
assets 靜態(tài)文件目錄。Hello world 中為空。
res 為應(yīng)用中的資源目錄,res 中含有多個(gè)子目錄,為多種資源。如果你曾經(jīng)使用 Silverlight, Polish Java ME 或是 WPF 等使用 XML 來描述 UI 的應(yīng)用,則您會(huì)覺得 res 目錄下的各種資源文件似曾相識(shí)。Android 也是采用 XML 來描述 UI 的。
AndroidManifest.xml 應(yīng)用程序描述文件,類同于 Java ME 的 JAD 文件。它定義了應(yīng)用的構(gòu)成,組件,權(quán)限等信息。
default.properties 和 proguard.cfg 一般不需要改動(dòng)。proguard.cfg 主要用來擾碼(混淆器)來保護(hù)應(yīng)用防止反編譯。開發(fā)過 Java 或是 .Net 應(yīng)用的應(yīng)該對(duì)這比較熟悉。
這樣就有了第一個(gè)應(yīng)用“Hello World”,可以直接運(yùn)行。Run As -> Android Application ,將啟動(dòng)模擬器,如果你有 Android 設(shè)備,則也可以選擇使用 Android 設(shè)備運(yùn)行。
http://wiki.jikexueyuan.com/project/android-development-tutorial/images/8.png" alt="" />
到目前為止我們還沒有寫一行代碼。還不能說了解開發(fā) Android 應(yīng)用的基本概念。所以需要具體了解一下這個(gè)應(yīng)用的幾個(gè)重要的組成部分:
主 Activity ,打開類 com.pstreets.android.example.HelloWorld
package com.pstreets.android.example;
import android.app.Activity;
import android.os.Bundle;
public class HelloWorld extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
前面提到 Activity 是 Android 中類似 Windows Mobile 中的 Form 類的基本 UI 類。如果您開發(fā)過 Java ME 應(yīng)用,Activity 更像 MIDlet,當(dāng) Android 應(yīng)用可以有多個(gè)Activity,而每個(gè)Java ME應(yīng)用中只能有一個(gè)MIDlet派生類。如果熟悉MVC ,MVP模型 ,Activity類似于 MVC或是 MVP模型中的 Controller或是Presenter。Activity 有多個(gè)生命周期事件可以實(shí)現(xiàn),onCreate是其中一個(gè),它類似于Java ME MIDlet的 startApp 或是 From 的 From_Load事件。Activity將在后面在詳細(xì)介紹。 setContentView(R.layout.main); 設(shè)置Activity主用戶UI。
Layout 資源文件 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 是通過 XML 來描述 UI 的,UI 一般通過 res 下 Layout 資源來描述 main.xml 中定義了 HelloWorld主 界面??梢钥吹?LinearLayout 和 TextView 兩個(gè)元素。這表示主界面采用LinearLayout 布局(類似 Swing 中 Layout),下面是一個(gè) TextView(文本框),文本框顯示的內(nèi)容是@string/hello, @string/hello 為一個(gè) string 資源,@表示資源引用。string 資源定義在 res->values->strings.xml 中,其值為
View 在 Android 中表示一個(gè)可視化組件,剛接觸 Android 開發(fā)時(shí),可能會(huì)有些困惑,因?yàn)樵谄渌脚_(tái)在 View 一般指用戶界面(Windows),如果拿 Java ME 或是 Windows Mobile 做類比的話,Android 中的 View 相當(dāng)于 Windows Mobile 中的 Control 或是 Component, ViewGroup 相當(dāng)于 Container 或是 Swing 中的 Layout。 R.layout.main 定義在 gen->R.Java 中,為自動(dòng)為資源生成的資源 ID。
AndroidManifest.xml 應(yīng)用程序清單
<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android”
package=”com.pstreets.android.example”
android:versionCode=”1″
android:versionName=”1.0″>
<application android:icon=”@drawable/icon” android:label=”@string/app_name”>
<activity android:name=”.HelloWorld”
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>
<uses-sdk android:minSdkVersion=”4″ />
</manifest>
和 Java ME 的 JAD 文件類似,AndroidManifest.xml 定義了 Android 應(yīng)用中所有的Activity ,應(yīng)用的圖標(biāo),權(quán)限等屬性。
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter> 表示這個(gè) Activity 是可以通過 Android 應(yīng)用菜單來啟動(dòng),具體含義在介紹Activity時(shí)再說明。
此外,Android 除了使用 XML 來描述 UI 外,如果你不怕麻煩的話,也可以通過代碼來創(chuàng)建 UI,方法類似 Swing UI。