Android Hello World 實例
讓我們開始真正的基於Android框架編程。在開始使用Android SDK寫第一個示例之前,請確保你已經按照Android - 環境搭建 教學仲介紹的完成了你的Android開發環境搭建。同時,我假設你具備一些Eclipse IDE的知識。
現在讓我們開始寫一個簡單的Android應用程式,可以列印出"Hello World"。
創建 Android 應用
第一步是通過Eclipse IDE來創建一個簡單地Android應用程式。按照選項File -> New -> Project,最後從嚮導列表選擇 Android New Application 。現在,使用如下的窗口嚮導將應用程式命名為HelloWorld:

接下來,按照所提供的說明,保持所有的默認輸入,直到最後一步。一旦專案創建成功,將會看到如下的專案介面 -

Android應用程式剖析
在運行應用之前,你需要知道Android專案中的一些檔目錄和文件 -

| 序號 | 檔夾、檔和說明 |
|---|---|
| 1 | src:包含專案中所有的.java原始檔案,默認情況下,它包括一個 MainActivity.java原始檔案對應的活動類,當應用程式通過應用圖示啟動時,將運行它。 |
| 2 | gen:這包含由編譯器生成的.R檔,引用了所有專案中的資源。該檔不能被修改。 |
| 3 | bin:這個檔夾包含Android由APT構建的.apk包檔,以及運行Android應用程式所需要的其他所有東西。 |
| 4 | res/drawable-hdpi:這個目錄下包括所有的為高密度螢幕設計所需的drawable對象。 |
| 5 | res/layout:這個目錄存放用於定義用戶介面的檔。 |
| 6 | res/values:這個目錄存放各種各樣的包含一系列資源的XML檔,比如字串和顏色的定義。 |
| 7 | AndroidManifest.xml:這個是應用程式的清單檔,描述了應用程式的基礎特性,定義它的各種組件。 |
下麵的章節將給出一些重要的應用程式檔的概覽。
主要活動檔
主要活動代碼在MainActivity.java的Java檔中。這是實際的應用程式檔,將被轉化為Dalvik可執行檔並運行。下麵是由應用嚮導為Hello World應用生成的默認代碼 -
package com.example.helloworld;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v4.app.NavUtils;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
這裏,R.layout.activity_main引用自res/layout目錄下的activity_main.xml檔。onCreate()是活動被加載之後眾多被調用的方法之一。
Manifest檔
無論你開發什麼組件用作應用程式中的一部分,都需要在應用程式專案根目錄下的manifest.xml檔中聲明所有的組件。這個檔是Android操作系統與你的應用程式之間的介面,因此,如果沒有在這個檔中聲明你的組件,將無法被操作系統所識別。舉個例子,一個默認的清單檔看起來如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.helloworld"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="22" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
這裏,
意圖篩檢程式的action被命名為android.intent.action.MAIN,表明這個活動被用做應用程式的入口。意圖篩檢程式的category被命名為android.intent.category.LAUNCHER,表明應用程式可以通過設備啟動器的圖示來啟動。
@string指的是strings.xml(將在後面介紹)。因此,@string/app_name指的是定義在strings.xml中的app_name,實際為"Hello World"。類似的,應用中的其他字串也很流行。
下麵是你的清單檔中將用到的標籤,用於指定不同的Android應用程式組件:
活動元素 服務元素 廣播接收器元素 內容提供者元素
Strings 檔
strings.xml檔在res/value檔夾下,它包含應用程式使用到的所有文本。例如,按鈕、標籤的名稱,默認文本,以及其他相似的strings。這個檔為他們的文本內容負責。一個默認的strings檔看起來如下:
<resources> <string name="app_name">HelloWorld</string> <string name="hello_world">Hello world!</string> <string name="menu_settings">Settings</string> <string name="title_activity_main">MainActivity</string> </resources>
R 檔
gen/com.example.helloworld/R.java檔是活動的Java檔,如MainActivity.java的和資源如strings.xml之間的膠水。這是一個自動生成的檔,不要修改R.java檔的內容。下麵是一個R.java檔的示例:
/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/
package com.example.helloworld;
public final class R {
public static final class attr {
}
public static final class dimen {
public static final int padding_large=0x7f040002;
public static final int padding_medium=0x7f040001;
public static final int padding_small=0x7f040000;
}
public static final class drawable {
public static final int ic_action_search=0x7f020000;
public static final int ic_launcher=0x7f020001;
}
public static final class id {
public static final int menu_settings=0x7f080000;
}
public static final class layout {
public static final int activity_main=0x7f030000;
}
public static final class menu {
public static final int activity_main=0x7f070000;
}
public static final class string {
public static final int app_name=0x7f050000;
public static final int hello_world=0x7f050001;
public static final int menu_settings=0x7f050002;
public static final int title_activity_main=0x7f050003;
}
public static final class style {
public static final int AppTheme=0x7f060000;
}
}
Layout 檔
activity_main.xml是一個在res/layout目錄下的layout檔。當應用程式構建它的介面時被引用。你將非常頻繁的修改這個檔來改變應用程式的佈局。在"Hello World"應用程式中,這個檔具有默認的佈局,內容如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:padding="@dimen/padding_medium"
android:text="@string/hello_world"
tools:context=".MainActivity" />
</RelativeLayout>
這是一個簡單的RelativeLayout的示例,更多內容會在獨立的章節中講解。TextView是一個Android的控件用於構建用戶圖形介面。它包含有許多不同的屬性,諸如android:layout_width, android:layout_height等用來設置它的寬度和高度等。@string指的是res/values檔夾下的strings.xml檔。因此,@string/hello_world指的是定義在strings.xml中的名為hello的字串:"Hello World!"。
運行應用程式
讓我們嘗試運行剛剛建立的Hello World!應用程式。假設在搭建環境時你已經創建好了AVD。從Eclipse運行應用,打開你專案中的一個活動檔,並且點擊工具欄上的
圖示。Eclipse在AVD上安裝應用,並啟動它。如果一切順利,將顯示如下的模擬器窗口 -

恭喜你已經開發了第一個Android應用程式,按照接下來剩餘的教程一步一步來,你將成為一個牛B的Android開發人員。
