Android開發(fā)速成簡潔教程三:第一個應(yīng)用Hello World
在安裝后Android開發(fā)環(huán)境和創(chuàng)建好Android模擬器之后,就可以開始寫***個Android應(yīng)用“Hello,World”。后面的例子均采用Eclipse IDE。
安裝ADT plugin之后,創(chuàng)建的新項目種類就會增加一個Android Project類型:
選擇Android Project項目類型,出現(xiàn)下面對話框:
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平臺中特有的一個新概念。以Java ME或是Windows Mobile CE應(yīng)用作參考,它類似于Java ME和Windows Mobile中 UI類的Form類。
Min SDK Version: 可以為空。 Android平臺的 版本比較多,從1.5到目前的3.0。Android平臺支持向下兼容。Min SDK Version指出了您開發(fā)應(yīng)用支持的最第版本。4對應(yīng)于Android 1.5。
點擊“Finish”則在Eclipse 的Workspace中創(chuàng)建了“Hello World”項目:
ADT Plug自動創(chuàng)建了幾個目錄:
src 應(yīng)用源碼目錄
gen Android應(yīng)用自動生成的代碼,主要是根據(jù)Android資源目錄res下的資源來生成的,這樣可以根據(jù)資源ID來訪問應(yīng)用中的資源。一般不建議手工改動,即使改動,下次編譯時也會被重新覆蓋。
Android 1.6 表示當(dāng)前選擇的Android版本是Android1.6,你可以使用Android1.6中提供的API??梢酝ㄟ^項目的屬性來修改Android版本。
assets 靜態(tài)文件目錄。Hello world 中為空。
res 為應(yīng)用中的資源目錄,res中含有多個子目錄,為多種資源。如果你曾經(jīng)使用Silverlight, Polish Java ME或是 WPF等使用XML來描述UI的應(yīng)用,則您會覺得res 目錄下的各種資源文件似曾相識。Android也是采用XML來描述UI的。
AndroidManifest.xml 應(yīng)用程序描述文件,類同于Java ME的 JAD文件。它定義了應(yīng)用的構(gòu)成,組件,權(quán)限等信息。
default.properties 和proguard.cfg 一般不需要改動。proguard.cfg主要用來擾碼(混淆器)來保護(hù)應(yīng)用防止反編譯。開發(fā)過Java 或是.Net 應(yīng)用的應(yīng)該對這比較熟悉。
這樣就有了***個應(yīng)用“Hello World”,可以直接運行。Run As -> Android Application ,將啟動模擬器,如果你有Android設(shè)備,則也可以選擇使用Android設(shè)備運行。
到目前為止我們還沒有寫一行代碼。還不能說了解開發(fā)Android應(yīng)用的基本概念。所以需要具體了解一下這個應(yīng)用的幾個重要的組成部分:
主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)用可以有多個Activity,而每個Java ME應(yīng)用中只能有一個MIDlet派生類。如果熟悉MVC ,MVP模型 ,Activity類似于 MVC或是 MVP模型中的 Controller或是Presenter。Activity 有多個生命周期事件可以實現(xiàn),onCreate是其中一個,它類似于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主界面??梢钥吹絃inearLayout和TextView兩個元素。這表示主界面采用LinearLayout布局(類 似Swing 中Layout),下面是一個TextView(文本框),文本框顯示的內(nèi)容是@string/hello, @string/hello為一個string 資源,@表示資源引用。string資源定義在res->values->strings.xml 中,其值為<string name=”hello”>Hello World, HelloWorld!</string>。
View 在Android中表示一個可視化組件,剛接觸Android開發(fā)時,可能會有些困惑,因為在其它平臺在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 中,為自動為資源生成的資源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> 表示這個Activity 是可以通過Android應(yīng)用菜單來啟動,具體含義在介紹Activity時再說明。
此外,Android 除了使用XML來描述UI外,如果你不怕麻煩的話,也可以通過代碼來創(chuàng)建UI,方法類似Swing UI。