在這一節,我先從一個簡單的計算機入手,帶著大家來分析android系統應用程式的結構、實現方式、源碼的組織,以及代碼修改後的效果顯示。通過學習系統應用程式,可以瞭解android的應用程式,也可以學到開發應用程式的基本知識,也可以深入理解android系統的應用程式的實現,比如漢化、多語言、添加功能等等,這對於初學者是非常重要的一環。下面就開始來學習計算機的應用程式,接著進入下面的目錄,並 查看檔案:
Android-2.0/packages/apps/Calculator
在目錄下,可以看到有如下檔案:
2010-02-21 21:32 AndroidManifest.xml
2010-02-21 21:32 Android.mk
2010-02-21 21:32 arity-1.3.3.jar
2010-02-21 21:32 MODULE_LICENSE_APACHE2
2010-02-21 21:32 NOTICE
2010-02-21 21:32 res
2010-02-21 21:32 src
2010-02-21 21:32 tests
AndroidManifest.xml 檔案是Android應用程式中最重要的檔案之一,它是應用程式的全域設定檔,是每個android應用程式中必須的檔案,位於應用程式的根目錄下,描述了包中的全域資料,包括包中暴露的組件,以及自己實現的類,各種能被處理的資料和啟動位置等重要訊息。這個檔案內容如下:
<?xml version="1.0" encoding="utf-8"?>
這一行說明XML檔案的標準,使用utf-8編碼。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.calculator2">
manifest節點描述了xml使用的規範,因此xmlns指向android的命名空間。
package屬性說明這個應用程式的包名稱,這裡是 com.android.calculator2。
<application android:label="@string/app_name" android:icon="@drawable/icon">
這一行是應用程式的屬性。 android:label是指明應用程式的標題,這裡是從應用程式的字串資裡讀取app_name的字串來顯示。 android:icon是指明應用程式的表徵圖,這裡指明從目錄drawable的icon名稱的表徵圖。
<activity android:name="Calculator"
android:theme="@android:style/Theme.Black.NoTitleBar">
這一行是說明應用程式啟動的視窗類別, android:name是指明視窗類別的名稱,這裡是 Calculator。 android:theme是指明視窗顯示樣式。
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
這段是指明啟動時應用程式入口函數,並且說明啟動後放到主視窗顯示。其實 intent-filter節點是過濾的意思,就是說通過這個節點裡的內容明指是那些分類起作用,否則就是全部的分類起作用。
android.intent.action.MAIN決定應用程式最先啟動的Activity,在一個應用程式裡有多個Activity時,一定要指明那一個先運行,否則虛擬機器就不知道運行那一個了。
android.intent.category.LAUNCHER決定應用程式是否顯示在程式列表裡。如果不需要顯示這個應用程式到列表裡,就可以不添加這項。
因此,這兩項內容是應用程式入口描述和指定。
</activity>
</application>
</manifest>
從上面這個例子的XML描述檔案可知,它是包括了很多重要訊息在裡面的,否則虛擬機器載入運行後,就不知所措了。其實這個檔案,還可以添加更加屬性,具體請參考android裡SDK的開發說明文檔。