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