編輯:開發入門
main.XML
這個示例應用程序包含一個活動和一個視圖。應用程序包含一個名為 main.xml 的文件,它代表活動的主 UI 的視覺方面。注意,在 main.XML 中沒有指定在哪裡使用這個布局。這意味著,如果需要的話,可以在多個活動中使用它。清單 5 給出布局文件的內容。
清單 5. 布局文件
<?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="Hello World, SaySomething"
/>
</LinearLayout>
這是最簡單的布局,其中只有一個垂直的線性布局,這意味著所有元素排成一列。這裡有一個 TextVIEw 元素,它與其他開發環境中的標簽類似。TextVIEw 代表不可編輯的靜態文本。
注意,每個視圖元素(比如這個示例中的 LinearLayout 和TextVIEw)都有屬於 android 名稱空間的屬性。一些屬性是所有視圖元素都有的,比如 android:layout_width 和android:layout_height。這些屬性可以采用的值是:
在構建期間,對所有資源進行編譯。編譯過程的輸出之一是 R.java 文件,這個文件向應用程序的其余部分提供資源。下面討論 R.Java 文件。
R.Java
R.java 文件是在構建時自動創建的,所以不要手工修改它,因為所有修改都會丟失。清單 6 給出這個示例應用程序的 R.Java 文件。
清單 6. 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.msi.ibmtutorial;
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int icon=0x7f020000;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040000;
}
}
R 類包含一些匿名子類,每個子類包含前面描述的各種資源的標識符。注意,這些類都是靜態的。
請注意 R.layout.main 代表的元素。這個標識符代表由 main.XML 定義的布局。在活動的 onCreate 方法中使用過這個值:setContentVIEw(R.layout.main);。這就是在運行時把特定的活動(在這個示例中是 SayAnything)和特定的布局(主布局)聯系在一起的方法。
構建應用程序
在默認情況下,每次保存文件時,都將對它們進行編譯。
圖 5. 錯誤面板
我們在源代碼中引入了一個錯誤,即在 setContent 和 VIEw 之間加了一個空格。在保存這個文件時,它被編譯並在屏幕底部的 Problems 面板中顯示錯誤。在源代碼中糾正這個錯誤之後,應用程序就能夠成功編譯,並從問題列表中刪除錯誤。
androidManifest.XML
androidManifest.XML 文件是 android 應用程序的部署描述符。這個文件列出應用程序中包含的所有活動、服務、內容提供器和接收器,以及應用程序支持的 IntentFilter。下面是這個示例應用程序的完整的 androidManifest.XML 文件。
清單 7. androidManifest.XML 文件
<?xml version="1.0" encoding="utf-8"?>
<manifest XMLns:android="http://schemas.android.com/apk/res/android"
package="com.msi.ibmtutorial">
<application android:icon="@drawable/icon">
<activity class=".SaySomething" android:label="@string/app_name">
<intent-filter>
<action android:value="android.intent.action.MAIN" />
<category android:value="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
請注意以下情況:
<manifest> 標記的實際作用是 “導入” 這個包中的類。在這個文件中,所有非完全限定的類都屬於 package 屬性指定的包。<application> 標記的一個屬性引用了應用程序的一個資源。請注意 drawable 標識符前面的 @ 符號。這裡的意思是,在應用程序資源的 drawable 文件夾中尋找名為 “icon” 的資源。<activity> 標記包含以下屬性和值:android:label 是應用程序的名稱。注意,它來自一個字符串資源。string.XML 文件包含應用程序的本地化字符串。<intent-filter> 表示應用程序中可用的 IntentFilter。這是 android 應用程序中最常見的 IntentFilter。這個過濾器的實際意思是,它實現 “主” 操作(也就是入口點),而且它位於 OS 的啟動器中。這意味著可以在 android 設備上像啟動其他應用程序一樣,從應用程序主列表中啟動它。下一節討論如何在 Eclipse 中的 android 模擬器上啟動應用程序。
運行應用程序
應用程序已經成功地編譯了,現在該運行這個示例應用程序了。在 Eclipse 中選擇 Open Run Dialog 或工具欄上的快捷按鈕。這會打開一個對話框,可以在這裡創建啟動配置。選擇 android Application 選項並單擊 New 的圖標。
圖 6 顯示本教程示例所用的值。
圖 6. Run 對話框
指定配置名稱。本教程使用的名稱是 Tutorial Configuration。在可用項目列表中選擇 ibmtutorial 項目(單擊 Browse 可以看到可用項目)。在下拉列表中選擇啟動活動。現在選擇 Emulator 選項卡,根據需要指定模擬器設置。可以保持默認設置。有兩個設置需要注意,見圖 7。
圖 7. Run 對話框,Emulator 選項卡
有幾種可供選擇的屏幕大小和方向,還有網絡選擇。如果運行應用程序的移動設備的因特網連接速度不同,網絡選擇就很重要了。在構造應用程序原型時,選擇完整網絡速度而且沒有延遲。開發了主要功能之後,最好在比較真實的網絡環境中進行測試,看看應用程序的響應速度如何。
選擇 Run 運行示例應用程序。
圖 8. 模擬器
應用程序已經在模擬器上運行了,現在看看幕後發生的情況。Dalvik Debug Monitor Service(DDMS)將會幫助檢查應用程序的運行情況。
調試應用程序
要想檢查正在運行的應用程序中發生了什麼情況,就需要查看正在運行的 Dalvik VM。在 Eclipse 中,選擇 Window > Open Perspective > Other。在出現的對話框中選擇 DDMS。這會在 Eclipse 中打開一個新的透視圖,其中有許多有趣的窗口。下面簡要介紹一下 DDMS 透視圖中提供的資源:
LogCat 是一個日志文件,它記錄 VM 中發生的活動。應用程序可以通過 Log.i(tag,message); 在這個日志文件中添加自己的日志項,其中的 tag 和 message 都是 Java 字符串。Log 類屬於android.util.Log 包。
圖 9 顯示 LogCat。
圖 9. LogCat
DDMS 中的另一個方便的工具是文件管理器,可以用它訪問模擬器的文件系統。圖 10 顯示在模擬器上部署本教程示例應用程序的位置。
圖 10. 在模擬器上部署的示例應用程序
用戶應用程序部署在 /data/app 目錄中,而 android 內置的應用程序部署在 /system/app 目錄中。
在 DDMS 中還可以查看正在運行的進程。
圖 11. 正在運行的進程列表
Activity生命周期
看一個圖先: 這是官網的Activity生命周期結構圖,從這個圖中可以看出Activity的生命周期函數挺多的,其實他的生命周期和以往我們看到的其他組件的生命周期一樣,
用 Eclipse 開發 Android 應用程序(四)
創建內容提供器和 Google Maps 應用程序您已經看到了一個完整的應用程序示例,現在簡要討論一下更加復雜的應用程序。內容提供器和 Google Maps本教程中討
使用 Android 實現聯網(一)
簡介本文建立在 “使用 Eclipse 開發 android 應用程序” 一文的基礎之上,探究了 Android 的網絡功能。了解如何利用 Android 的網絡選項來
Android 動畫框架詳解,第 1 部分
簡介: Android 平台提供了一套完整的動畫框架,使得開發者可以用它來開發各種動畫效果。Android 動畫框架詳解由原理篇和實例篇兩部分組成。本文是第一