從零開始–系統深入學習android(實踐-讓我們開始寫代碼-新手指南-1.Hello,World)

來源:互聯網
上載者:User
第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所示:

屬性

描述

xmlns:android

這是一個XML命名空間聲明,告訴Android的工具,你會引用在Android命名空間中定義的共同屬性。在每一個Android的布局檔案的最外層標籤必須有此屬性。

android:id

該屬性指定一個TextView元素的唯一識別碼。您可以使用分配的ID從原始碼中引用它。

android:layout_width

該屬性定義了這個View需要佔用的寬度,“fill_paren”表示佔用父節點的全部寬度,這裡的父節點即螢幕。

android:layout_height

和寬度類似,表示高度

android:text

這設定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

在你的代碼中引入一個null 指標異常,然後你會在模擬器中看見1-4的效果。

 

圖1-4 Android裝置中出現null 指標異常

我們可以在Object o = null;這一行設定一個斷點(雙擊旁邊的程式碼),然後右鍵選擇Run - > Debug As - > Android Application。然後運行偵錯模式,並會在斷點處停下來。然後進入調試介面,你可以滑鼠移至上方或者觀察右上方中變數的值,1-5所示:

圖1-5 Android調試介面

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.