編輯:開發入門
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的生命周期函數挺多的,其實他的生命周期和以往我們看到的其他組件的生命周期一樣,
創建內容提供器和 Google Maps 應用程序您已經看到了一個完整的應用程序示例,現在簡要討論一下更加復雜的應用程序。內容提供器和 Google Maps本教程中討
簡介本文建立在 “使用 Eclipse 開發 android 應用程序” 一文的基礎之上,探究了 Android 的網絡功能。了解如何利用 Android 的網絡選項來
簡介: Android 平台提供了一套完整的動畫框架,使得開發者可以用它來開發各種動畫效果。Android 動畫框架詳解由原理篇和實例篇兩部分組成。本文是第一