第1章 Hello,World
作為一名開發者,我們學習一個平台的第一印象肯定都是寫一個“Hello,World”。在Android上寫一個“Hello,World”是很簡單的,由於我們使用Eclipise IDE,它提供了ADT這么強大的插件,這樣創建和管理一個項目就更簡單了,可以大大縮短我們的時間。在開始之前,你應該確認你已經安裝了SDK和ADT插件。本章會根據以下幾個部分來講述:
1. 安裝一個平台(系統版本)
2. 創建一個Android虛擬機(AVD)
3. 創建一個項目
4. 構建一個用戶界面
5. 執行代碼
6. 升級界面為一個XML布局
7. 調試你的項目
1.1 安裝一個平台(系統版本)
為了執行Hello World應用程序,你需要在你的SDK環境中安裝至少一個Android平台版本。如果你已經安裝了就可以跳過這一步,請注意根據你的實際情況下載最實用的平台版本,筆者自己下載的是1.6----2.1----2.2---2.3----3.0這五個版本的平台版本,請根據自己實際情況下載吧。如果你還沒有下載過一個平台版本,在Eclpise請按照以下步驟執行:
1. 在Android SDK Manager 中,選擇左邊面板中的 Available Packages
2. 在右邊面板,展開Android Repository列表顯示一些可用的安裝組件
3. 至少選擇一個平台安裝,點擊Install Selected
1.2 創建一個Android虛擬機(AVD)
我們在第一大篇的開發入門中已經講過,如何使用和管理AVD。在本章中,我們將在Android模擬器中執行我們的應用程序。所以在你啟動一個模擬器之前,必須先創建一個AVD。創建步驟如下:
1. 在Eclipse中,選擇Window > AVD Manager
2. 在左邊面板選擇Virtual Devices
3. 點擊 New...
然后來到Create New AVD對話框
4. 輸入虛擬機的名字,我自己的虛擬機都是使用系統版本命名,例如“AVD2.2.
5. 選擇一個target(Android SDK系統版本例如2.3.3)。然后本章為了簡單,后面的字段就省略掉了
6. 點擊 Create AVD.
1.3 創建一個新的Android項目
下面我們來創建一個新Android的項目,步驟如下:
1. 在Eclipse中, 選擇 File > New > Project...
如果你的ADT插件安裝正確,那么應該會顯示出如圖1-1的界面
圖1-1 在Eclipse創建Android項目的截圖
2. 選擇"Android Project"然后點擊Next
3. 按照以下步驟填寫一些項目細節,如圖1-2所示:
◆Project name: HelloAndroid
◆Build Target: 根據你虛擬機創建的系統版本來選擇對應的Application name: Hello, Android
◆Package name: com.example.helloandroid (包名)
◆Create Activity: HelloAndroid(主Activity名)
圖1-2 在Eclipse創建Android項目中填寫相應的細節
這里我們講以下Min SDK Version字段:當我們Build Target選擇的是2.1(對應的API Level為7)時,這里應該填7或者低於7的版本,例如3或者4。切記不能填寫高於7的。不然會有一些錯誤和隱患。我們的項目已經創建好了,然后我們在Eclipse左邊的Package Explorer面板打開HelloAndroid.java文件,位於HelloAndroid > src > com.example.helloandroid。代碼如下:
package com.example.helloandroid; import android.app.Activity; import android.os.Bundle; publicclassHelloAndroidextendsActivity{ /** Called when the activity is first created. */ @Override publicvoid onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); } }
代碼清單1-1
注意我們的HelloAndroid是繼承於Activity類的。一個Activity是一個單一的應用程序實體,用於執行動作。一個應用程序可能有許多個Activityies組成,但在某一時刻只有一個Acitvity與用戶在交互。當你的Activity啟動后,Android系統會調用onCreate()方法。你應該在這里執行一些初始化和UI設置的操作。一個Activity不需要有一個用戶界面也能正確執行,但通常我們應該加一個基礎的用戶界面來顯示一些東西,下面讓我們來修改一些代碼!
1.4 構建一個用戶界面
同樣在HelloAndroid 類中,改進了一下代碼。下面的粗體就是我們新添加的。
package com.example.helloandroid; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class HelloAndroid extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.setText("Hello, Android"); setContentView(tv); } }
代碼清單1-2
一個Android用戶界面是由Views的對象層次結構組成的。一個View是一個可繪制的對象,並當做一個UI布局元素,例如一個按鈕,圖片或者此處TextView(文本標簽)。每一個UI元素的都是一個View,它們都直接或間接繼承與View類。這里我們創建一個TextView對象,需要傳一個Context實例對象。Context用於處理與系統相關的一些操作,例如解決資源調用,獲得訪問數據庫的一些接口和首選項等。Activity 類繼承自Context,所以這里可以直接傳”this”。接下來我們需要使用setText()來設置文本的內容。最后我們需要通過setContextView()把TextView添加到我們當前的Activity界面中。如果你沒有調用setContextView(),那么系統不會顯示這個TextView,而是顯示一個背景全黑的空白屏幕。
好的,”Hello,Android”的項目代碼已經寫好了,接下來我們需要執行它了。
1.5 執行應用程序
由於在Eclpise中有插件,我們執行它很容易,並且方法有很多種,這里我們可以在項目上點擊鼠標右鍵->選擇Run As->Anroid Application
Eclipse插件自動為您的項目創建一個新的運行配置文件,然后啟動Android模擬器。根據您的環境,Android模擬器可能需要幾分鍾才能全面啟動完畢,所以請耐心等待。當啟動完畢后,Eclipse插件會安裝應用程序,並啟動默認的Activity。顯示效果如圖1-3所示:
圖1-3 在Eclipse中使用模擬器啟動Hello,Android后的截圖
在應用程序灰色欄中看到的“Hello,Android”實際上是應用程序的標題。創建項目時,Eclipse插件會自動創建res/values/strings.xml。然后再AndroidManifest.xml會引用strings.xml中的標題字段。標題下面的文字,才是我們在代碼中寫的TextView。雖然“Hello World”已經寫完了,但是你可以繼續閱讀項目中其他有價值的信息。
1.6 升級界面為一個XML布局
在 "Hello, World" 例子中我們使用的是代碼布局。如果你是位經驗豐富的的UI程序員,你可能熟悉這種做法是非常脆弱的:布局中的微小變化可能導致大量代碼的改動,並且很容易與之忘記相關的其他View,這會導致你的布局錯誤並且浪費大量時間在調試。因此Android提供了一種基於XML布局文件來代替用代碼寫布局的模式。下面讓我們來舉一個例子,跟上面的“代碼清單1-2”一樣的效果,我們不使用代碼布局一個TextView,而使用以下的XML文件來代替:
<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/textview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="@string/hello"/>
這是一個簡單的Android XML布局文件結構:它是一個樹節點,其中每個節點都是一個View。我們使用的元素都是繼承自View類的,TextView是Android已經寫好的一個View,當然我們也可以在代碼自定義View。這種結構可以很容易的快速建立用戶界面,比起代碼布局,它使用更簡單的結構和語法。在上面的XML布局文件中只有一個TextView節點,但這里用到了幾個屬性。如表格1-1所示:
屬性 |
描述 |
|
這是一個XML命名空間聲明,告訴Android的工具,你會引用在Android命名空間中定義的共同屬性。在每一個Android的布局文件的最外層標簽必須有此屬性。 |
|
該屬性指定一個TextView元素的唯一標識符。您可以使用分配的ID從源代碼中引用它。 |
|
該屬性定義了這個View需要占用的寬度,“fill_paren”表示占用父節點的全部寬度,這里的父節點即屏幕。 |
|
和寬度類似,表示高度 |
|
這設置TextView中應顯示的文字。在這個例子中,我們使用的是硬編碼的字符串值,而不是引用的一個字符串資源。當然更好的做法是引用在res/ strings.xml文件定義的hello字符串。因為這樣符合國際化。這里為了簡單起見我們暫用硬編碼。 |
表格1-1 XML中節點的屬性
這些XML布局文件被放置在你工程的res/layout/ 目錄下。”res”代表資源,該目錄包含所有的非代碼資源,除了布局文件夾,還包括圖像,聲音,本地化字符串等。
Android默認的布局方式是縱向布局,在多屏幕多分辨那章,筆者已經介紹過了,這里我們的xml是放入layout/下的,layout就是默認的縱向布局,如果你吧手機橫向放置,android就會顯示橫向的布局,由於我們沒有在layout-land下放入布局文件,所以它會直接的在縱向布局下拉伸,當然這里只是一個小提示,真正做好一個項目,這些細節是必須考慮的。這里為了簡單起見,我們就讓他拉伸吧。Eclipse插件在我們新建項目的時候就在res/layout/下創建了一個main.xml的布局文件。我們在“代碼清單1-2”中是沒有使用這個main.xml布局文件的。
現在讓我們重新修改一下”代碼清單1-2”,如“代碼清單1-3”所示
package com.example.helloandroid; import android.app.Activity; import android.os.Bundle; public class HelloAndroid extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }
代碼清單1-3
我們放棄了,“代碼清單1-2”中的代碼生成View的方式,轉而使用“代碼清單1-3”XML布局文件,你會發現僅僅一行就搞定了,接下來讓我們看看R類(俗稱R文件)。在Eclipse中的項目中的gen/下找到我們的R.java。代碼如下
package com.example.helloandroid; public final class R { public static final class attr { } public static final class drawable { public static final int icon=0x7f020000; } public static final class id { public static final int textview=0x7f050000; } public static final class layout { public static final int main=0x7f030000; } public static final class string { public static final int app_name=0x7f040001; public static final int hello=0x7f040000; } }
代碼清單1-4
一個項目中的R文件都是用來保存所有資源的引用,代碼中如果要引用資源文件就是使用R文件引用他們的ID。此文件請不需要修改,當你有資源復制到項目中時,他會自動生成資源的引用ID。
1.7 調試你的項目
當然調試是必不可少的,Eclipse中的Android插件與Eclipse的調試器良好的集成在一起。為了證明這一點,下面我們來看“代碼清單1-5”
package com.example.helloandroid; import android.app.Activity; import android.os.Bundle; public class HelloAndroid extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Object o = null; o.toString(); setContentView(R.layout.main); } }
代碼清單1-5
在你的代碼中引入一個空指針異常,然后你會在模擬器中看見如圖1-4的效果。
圖1-4 Android設備中出現空指針異常
我們可以在Object o = null;這一行設置一個斷點(雙擊旁邊的代碼行),然后右鍵選擇Run - > Debug As - > Android Application。然后運行調試模式,並會在斷點處停下來。然后進入調試界面,你可以鼠標懸停或者觀察右上角中變量的值,如圖1-5所示:
圖1-5 Android調試界面截圖
完整項目下載鏈接:http://url.cn/TidNvn
本文來自jy02432443,QQ78117253。轉載請保留出處,並保留追究法律責任的權利