鍍金池/ 教程/ Android/ Android SDK 上手指南:應用程序結(jié)構(gòu)
Android SDK 上手指南:Java 應用程序編程
Android SDK 上手指南:下一步學習方向
Android SDK 上手指南:用戶交互
Android SDK 上手指南:項目清單
Android SDK 上手指南:虛擬與物理設備
Android SDK 上手指南:Activity 與生命周期
Android SDK 上手指南:示例項目
剖析 Android SDK:Android 組件詳解
Android SDK 上手指南:應用程序數(shù)據(jù)
Android SDK 上手指南:應用程序資源
Android SDK 上手指南:應用程序發(fā)布
Android SDK 上手指南:應用程序結(jié)構(gòu)
Android SDK 上手指南:知識測試(1)
Android SDK 上手指南:用戶界面設計
Android SDK 上手指南:運行與調(diào)試

Android SDK 上手指南:應用程序結(jié)構(gòu)

打開 Eclipse 并在 Package Explorer 當中查找我們已經(jīng)創(chuàng)建完成的項目。在“src”文件夾里,大家應該會看到設置項目所命名的項目包。包中應該包含我們的 Activity 類文件,這也是要在編輯器中打開的內(nèi)容。源文件夾保存著我們在開發(fā) Android 應用程序時所要用到的全部 Java 文件。

介紹

本教程將主要以探索與了解為主要目的,但后續(xù)的系列文章則將進一步帶大家深入學習如何創(chuàng)建用戶界面、響應用戶交互操作以及利用 Java 編排應用邏輯。我們將專注于大家剛剛開始接觸 Android 開發(fā)時最常遇到的項目內(nèi)容,但也會同時涉及一部分已經(jīng)存在于應用結(jié)構(gòu)當中的其它一些元素。在今天的文章中,我們不會對這些額外元素進行深入探討??偠灾私怅P(guān)于 Android 應用的基礎創(chuàng)建知識,這就是我們今天要完成的教學任務。

1. 源

第一步

打開 Eclipse 并在 Package Explorer 當中查找我們已經(jīng)創(chuàng)建完成的項目。在“src”文件夾里,大家應該會看到設置項目所命名的項目包。包中應該包含我們的 Activity 類文件,這也是要在編輯器中打開的內(nèi)容。源文件夾保存著我們在開發(fā) Android 應用程序時所要用到的全部 Java 文件。

每當我們創(chuàng)建一個項目時,都會創(chuàng)建一個用于容納各 Java 類文件的包。一款應用程序可能擁有不止一個包,而且每個包當中也可能容納著多個類文件。這些類文件中的處理代碼能夠?qū)⑽覀兊膽贸尸F(xiàn)給用戶、響應用戶的交互操作并執(zhí)行任何的必要處理。從實質(zhì)上看,類文件是在根據(jù)面向?qū)ο蟾拍钅P蛣澐峙c應用程序相關(guān)的代碼。

我們將在后續(xù)文章中進一步討論關(guān)于 Java 的概念以及對應實踐。在今天的教程內(nèi),大家只需理解一個 Java 應用會將各類處理任務拆分成一定數(shù)量的對象。每個對象都由一個類聲明來定義,這在應用程序中通常是一個獨立的文件,不過也可以被嵌套在其它類文件當中。一個對象基本上就是一大段代碼,其中承載著與應用程序相關(guān)的某項功能的一部分。類文件中的代碼能夠引用應用程序中的其它類或者應用程序中的其它包。

在大家著手進行應用程序開發(fā)時,首先需要向源文件夾中的包中添加 Java 類。一個向用戶提供用戶界面的典型 Android 應用將擁有至少一個 Activity 文件,應用中的不同屏幕顯示內(nèi)容還要用到更多 Activity 類。其它一些類型的應用,例如工具程序或者服務,則采用不同的結(jié)構(gòu)。大家最好首先關(guān)注 Activity UI 這種類型的應用程序,并在熟練掌握之后再接觸其它應用類型。

第二步

現(xiàn)在查看新應用中的 Activity 類文件。我們會在本系列教程的后續(xù)文章中進一步探討 Activity 代碼,因此目前大家不用太過關(guān)注細節(jié)。今天我們主要面向應用中的主 Activity,它會在應用啟動后同時開始生效。大家的應用也可能會啟動其它一些用于用戶交互的 Activity。在我們創(chuàng)建自己的項目時,Eclipse 會對應用進行設置并將主 Activity 作為主類——它在項目清單當中也將被作為主 Activity 進行顯示,我們稍后會看到。

在主 Activity 類當中,大家會看到 onCreate 方法,其中包含的代碼將在 Activity 被創(chuàng)建——也就是應用程序啟動時開始執(zhí)行。在該方法中,大家會看到以下代碼行:

setContentView(R.layout.activity_main);

在我們啟動項目之后,這一行的內(nèi)容用于指定我們所創(chuàng)建的布局文件,告訴 Android 將其作為內(nèi)容視圖。這意味著無論布局文件中包含什么樣的內(nèi)容,都將在該 Activity 顯示在屏幕上時呈現(xiàn)給用戶。

我們將在稍后進一步探討相關(guān)話題,目前暫時需要將注意力集中在“R.layout.activity_main”語法上。這就是我們的 Java 代碼引用應用程序資源的方式。我們將利用類似的語法通過資源的 ID 值對其進行引用,例如圖片及數(shù)據(jù)值等資源也可以通過這種方式實現(xiàn)引用。其中的“R”代表應用資源,后面的部分則用于指定保存在“res/layout”目錄下的條目類型——在這里就是布局。這些資源最終要根據(jù)其名稱進行識別——對于示例中的布局,使用的就是文件名。由此推斷,我們要使用的語法就成了“R.type.name”。在我們開始編程之后,各位就會開始使用該語法。

在本系列的后續(xù)文章中,我們將向 Activity 類文件中添加代碼以實現(xiàn)用戶交互。現(xiàn)在打開應用中的“res”文件夾,大家會在其中找到多個子文件夾。這些文件夾是由 Eclipse 與 ADT 在我們啟用新 Android 項目后默認創(chuàng)建而成的,不過我們可能還需要為不同類型的資源添加其它一些目錄。

2. 布局資源

正如我們已經(jīng)看到,項目創(chuàng)建后所生成的布局文件會保存在“res/layout”文件夾中。如果某款應用擁有多個 Activity 屏幕,那么一般會為每個屏幕保留一個獨立的布局文件。大家可能還會將布局文件用于個別 UI 條目。當大家為 Activity 創(chuàng)建類文件時,需要如上所述利用 setContentView 進行布局設置。除此之外,大家也可以通過 Java 代碼進行布局設置——這算是種備選方案。在我們的示例中,布局設置是在應用執(zhí)行時動態(tài)生成的。不過利用 XML 的優(yōu)勢在于,我們可以在界面設計工作中直觀感受布局方案的視覺效果。

在應用程序的主布局文件當中(現(xiàn)在應該已經(jīng)用編輯器打開了),大家會看到 XML 結(jié)構(gòu)。如果各位之前沒有接觸過 XML 也不必擔心,我們會在后續(xù)文章中進一步討論這些基礎知識。就目前來說,大家只需了解:XML 是一種標記語言,類似于 HTML——如果之前接觸過 Web 開發(fā)的話。XML 文件利用樹狀結(jié)構(gòu)作為數(shù)據(jù)模型。通常來說,一個布局文件擁有一個根布局元素,并將其作為特定布局類型模型——其中所包含的用于 UI 條目的子元素則包括按鈕、圖片及文本等。

3. 可繪制資源

大家在資源目錄下應該會看到多個在名稱中包含“drawable”字樣的文件夾,這些文件夾用于保存應用程序所使用的圖片文件。這些圖片文件可以是我們在 Eclipse 之外所準備的數(shù)字圖片文件,格式包括 PNG 或者 JPEG 等?;蛘撸蠹乙部梢酝ㄟ^ XML 代碼來描述形狀、顏色以及外觀,從而定義特定可繪制資源。一旦我們在 drawable 文件夾中創(chuàng)建了文件,就可以在應用布局文件或者 Java 代碼中進行引用。這樣一來,之前準備好的視覺元素就能用于應用 UI 了。

資源目錄中會保留針對每一種密度桶的 drawable 文件夾。這些密度桶是各類運行 Android 系統(tǒng)的設備在像素密度方面的通用型分類依據(jù)。具體類別分為低、中、高、超高與超超高密度四種。只需從對應類型中作出選擇,我們就可以在密度桶的幫助下輕松簡化多屏幕密度的支持過程。這意味著當我們在項目中包含圖片文件時,可以將其放置在不同密度的文件夾當中,并通過裁剪提供滿足各種密度方案的版本。

4. 數(shù)據(jù)資源

在“res”目錄中,我們會看到一些標題中帶有“values”字樣的文件夾。這些文件夾用于容納大家希望在應用程序中所使用的數(shù)據(jù)值。這些值可以包含文本字符串以及數(shù)字。包含 XML 文件的值文件夾會列出其中的一項或者多項值。每份列表都包含一個名稱以及內(nèi)容中的值。應用中的其它文件,例如 Java 類或者布局文件,能夠通過這些名稱為引用這些值。在典型用例中,我們能夠需要通過這些保存在文本字符串的值在 UI 元素當中顯示內(nèi)容——例如按鈕。

應用程序中的不同值文件允許大家針對特定屏幕尺寸及 API 級別對值進行修改。如果同樣的值足以應對多川設備,則可以被直接保存在“Values”文件夾內(nèi)。

5. 清單

在查看應用程序中的主文件夾時,大家一定會發(fā)現(xiàn)項目的清單文件。通過雙擊即可利用編輯器將其打開。接下來,我們會看到一個顯示其內(nèi)容的圖形界面。點擊編輯器窗口底部的“AndroidManifest.xml”標簽來查看其 XML 代碼。這個文件將應用程序的各個方面定義成統(tǒng)一整體。Eclipse 與 ADT 會在我們創(chuàng)建應用的同時,在清單中創(chuàng)建特定元素,具體創(chuàng)建方式取決于大家在項目創(chuàng)建過程中的設置。大家可以手動向清單中添加其它元素,例如添加其它 Activity。

我們將運行其中的一部分主元素,旨在理解清單的作用,不過還有其它多種元素可以被包含其中。在清單中所列舉的新應用項目元素當中,我們將看到 uses-sdk 元素,我們利用它表示最小及目標 API 級別。Application 元素中包含指向啟動機制與應用程序名稱的屬性。在 application 元素中還存在著一個 activity 元素,會在應用程序開始運行時通過 intent-filter 元素作為主 Activity 啟動。當我們向應用中添加新的 Activity 時,則會為每個相關(guān)元素添加新的 activity 元素。

大家可能還需要向清單中添加其它元素,其中包括 uses-permission 元素,用于羅列應用所要求的權(quán)限——用戶會在安裝應用之前觀看到該列表。權(quán)限中包含多種操作條目,例如通過互聯(lián)網(wǎng)獲取數(shù)據(jù)、寫入存儲或者訪問設備上的其它功能——如相機。清單還會列舉應用程序所能支持的設備類型以及其它一些應用程序組件(例如后臺服務)。

6. 其它文件

講到這里,我們已經(jīng)談到了大家需要了解的 Android 應用程序項目結(jié)構(gòu)中的各大主要方面。隨著對 Android 開發(fā)的學習,大家將在今后經(jīng)常與這些內(nèi)容打交道。通過 Eclipse,我們還會看到項目中包含的其它一些文件及目錄,不過就目前來說基本都可以直接忽略。

正如在前面看到的,大家可以利用“R.”語法實現(xiàn)資源引用。Eclipse 以及管理系統(tǒng)的 ADT 都會引用應用中來自 Java 的資源。當大家在項目中對這些資源進行添加或者編輯時,Eclipse 會將對應內(nèi)容寫入“R.java”文件,從而幫助我們利用“R.”進行資源引用。當大家開始處理自己的 Java 文件,會在引用時看到 Eclipse 彈出的提示信息——這種機制能簡化對應用資源的管理工作?!癛.java”文件被保存在“gen”文件夾中。請注意:千萬不要嘗試直接編輯這個文件,它會在我們編輯項目資源時自動生成。系統(tǒng)會通過為應用中的每項資源分配惟一整數(shù) ID 的形式管理這一過程。

提示:當大家開始嘗試 Android 應用程序開發(fā)時,可能會在使用 R 時遇到問題。如果 Eclipse 顯示任何與 R 相關(guān)的錯誤信息,特別是“R 無法被解析為一個變量”,則需要檢查類文件的起始內(nèi)容,看看其中是否存在“R”的導入語句,例如“import android.R;”。如果找到了對應內(nèi)容,特別是在已經(jīng)將代碼復制并粘貼到文件中后,請刪除這一導入語句。如果遇到其它與 R 相關(guān)的提示,請確保資源文件當中不存在錯誤。如果問題仍然存在,嘗試利用“Project”,“Clean”清理項目。當一切努力皆告失敗時,試著重新啟動 Eclipse。

總結(jié)

在今天的文章中,我們了解了關(guān)于 Android 項目結(jié)構(gòu)的基礎知識。大家可以再花點時間隨意查看項目中的其它文件及文件夾,借此了解項目的整體結(jié)構(gòu)。在接下來的后續(xù)教程中,我們將在應用中創(chuàng)建用戶界面元素并處理用戶交互操作。我們還會探討關(guān)于 Java 編程的基本特性,借此進一步提升自己對 Android 開發(fā)項目的理解。

原文鏈接: http://mobile.tutsplus.com/tutorials/android/android-sdk-app-structure/