Android SDK簡明教程:應用程式結構

51CTO發表於2014-11-26

介紹

本教程將主要以探索與瞭解為主要目的,但後續的系列文章則將進一步帶大家深入學習如何建立使用者介面、響應使用者互動操作以及利用Java編排應用邏輯。我們將專注於大家剛剛開始接觸Android開發時最常遇到的專案內容,但也會同時涉及一部分已經存在於應用結構當中的其它一些元素。在今天的文章中,我們不會對這些額外元素進行深入探討。總而言之,瞭解關於Android應用的基礎建立知識,這就是我們今天要完成的教學任務。

1. 源

第一步

開啟Eclipse並在Package Explorer當中查詢我們已經建立完成的專案。在“src”資料夾裡,大家應該會看到設定專案所命名的專案包。包中應該包含我們的Activity類檔案,這也是要在編輯器中開啟的內容。原始檔夾儲存著我們在開發Android應用程式時所要用到的全部Java檔案。

每當我們建立一個專案時,都會建立一個用於容納各Java類檔案的包。一款應用程式可能擁有不止一個包,而且每個包當中也可能容納著多個類檔案。這些類檔案中的處理程式碼能夠將我們的應用呈現給使用者、響應使用者的互動操作並執行任何的必要處理。從實質上看,類檔案是在根據物件導向概念模型劃分與應用程式相關的程式碼。

我們將在後續文章中進一步討論關於Java的概念以及對應實踐。在今天的教程內,大家只需理解一個Java應用會將各類處理任務拆分成一定數量的物件。每個物件都由一個類宣告來定義,這在應用程式中通常是一個獨立的檔案,不過也可以被巢狀在其它類檔案當中。一個物件基本上就是一大段程式碼,其中承載著與應用程式相關的某項功能的一部分。類檔案中的程式碼能夠引用應用程式中的其它類或者應用程式中的其它包。

在大家著手進行應用程式開發時,首先需要向原始檔夾中的包中新增Java類。一個向使用者提供使用者介面的典型Android應用將擁有至少一個Activity檔案,應用中的不同螢幕顯示內容還要用到更多Activity類。其它一些型別的應用,例如工具程式或者服務,則採用不同的結構。大家最好首先關注Activity UI這種型別的應用程式,並在熟練掌握之後再接觸其它應用型別。

第二步

現在檢視新應用中的Activity類檔案。我們會在本系列教程的後續文章中進一步探討Activity程式碼,因此目前大家不用太過關注細節。今天我們主要面向應用中的主Activity,它會在應用啟動後同時開始生效。大家的應用也可能會啟動其它一些用於使用者互動的Activity。在我們建立自己的專案時,Eclipse會對應用進行設定並將主Activity作為主類——它在專案清單當中也將被作為主Activity進行顯示,我們稍後會看到。

在主Activity類當中,大家會看到onCreate方法,其中包含的程式碼將在Activity被建立——也就是應用程式啟動時開始執行。在該方法中,大家會看到以下程式碼行:

setContentView(R.layout.activity_main);

在我們啟動專案之後,這一行的內容用於指定我們所建立的佈局檔案,告訴Android將其作為內容檢視。這意味著無論佈局檔案中包含什麼樣的內容,都將在該Activity顯示在螢幕上時呈現給使用者。

我們將在稍後進一步探討相關話題,目前暫時需要將注意力集中在“R.layout.activity_main”語法上。這就是我們的Java程式碼引用應用程式資源的方式。我們將利用類似的語法通過資源的ID值對其進行引用,例如圖片及資料值等資源也可以通過這種方式實現引用。其中的“R”代表應用資源,後面的部分則用於指定儲存在“res/layout”目錄下的條目型別——在這裡就是佈局。這些資源最終要根據其名稱進行識別——對於示例中的佈局,使用的就是檔名。由此推斷,我們要使用的語法就成了“R.type.name”。在我們開始程式設計之後,各位就會開始使用該語法。

在本系列的後續文章中,我們將向Activity類檔案中新增程式碼以實現使用者互動。現在開啟應用中的“res”資料夾,大家會在其中找到多個子資料夾。這些資料夾是由Eclipse與ADT在我們啟用新Android專案後預設建立而成的,不過我們可能還需要為不同型別的資源新增其它一些目錄。

2. 佈局資源

正如我們已經看到,專案建立後所生成的佈局檔案會儲存在“res/layout”資料夾中。如果某款應用擁有多個Activity螢幕,那麼一般會為每個螢幕保留一個獨立的佈局檔案。大家可能還會將佈局檔案用於個別UI條目。當大家為Activity建立類檔案時,需要如上所述利用setContentView進行佈局設定。除此之外,大家也可以通過Java程式碼進行佈局設定——這算是種備選方案。在我們的示例中,佈局設定是在應用執行時動態生成的。不過利用XML的優勢在於,我們可以在介面設計工作中直觀感受佈局方案的視覺效果。

在應用程式的主佈局檔案當中(現在應該已經用編輯器開啟了),大家會看到XML結構。如果各位之前沒有接觸過XML也不必擔心,我們會在後續文章中進一步討論這些基礎知識。就目前來說,大家只需瞭解:XML是一種標記語言,類似於HTML——如果之前接觸過Web開發的話。XML檔案利用樹狀結構作為資料模型。通常來說,一個佈局檔案擁有一個根佈局元素,並將其作為特定佈局型別模型——其中所包含的用於UI條目的子元素則包括按鈕、圖片及文字等。

3. 可繪製資源

大家在資源目錄下應該會看到多個在名稱中包含“drawable”字樣的資料夾,這些資料夾用於儲存應用程式所使用的圖片檔案。這些圖片檔案可以是我們在Eclipse之外所準備的數字圖片檔案,格式包括PNG或者JPEG等。或者,大家也可以通過XML程式碼來描述形狀、顏色以及外觀,從而定義特定可繪製資源。一旦我們在drawable資料夾中建立了檔案,就可以在應用佈局檔案或者Java程式碼中進行引用。這樣一來,之前準備好的視覺元素就能用於應用UI了。

資源目錄中會保留針對每一種密度桶的drawable資料夾。這些密度桶是各類執行Android系統的裝置在畫素密度方面的通用型分類依據。具體類別分為低、中、高、超高與超超高密度四種。只需從對應型別中作出選擇,我們就可以在密度桶的幫助下輕鬆簡化多螢幕密度的支援過程。這意味著當我們在專案中包含圖片檔案時,可以將其放置在不同密度的資料夾當中,並通過裁剪提供滿足各種密度方案的版本。

4. 資料資源

在“res”目錄中,我們會看到一些標題中帶有“values”字樣的資料夾。這些資料夾用於容納大家希望在應用程式中所使用的資料值。這些值可以包含文字字串以及數字。包含XML檔案的值資料夾會列出其中的一項或者多項值。每份列表都包含一個名稱以及內容中的值。應用中的其它檔案,例如Java類或者佈局檔案,能夠通過這些名稱為引用這些值。在典型用例中,我們能夠需要通過這些儲存在文字字串的值在UI元素當中顯示內容——例如按鈕。

應用程式中的不同值檔案允許大家針對特定螢幕尺寸及API級別對值進行修改。如果同樣的值足以應對多川裝置,則可以被直接儲存在“Values”資料夾內。

5. 清單

在檢視應用程式中的主資料夾時,大家一定會發現專案的清單檔案。通過雙擊即可利用編輯器將其開啟。接下來,我們會看到一個顯示其內容的圖形介面。點選編輯器視窗底部的“AndroidManifest.xml”標籤來檢視其XML程式碼。這個檔案將應用程式的各個方面定義成統一整體。Eclipse與ADT會在我們建立應用的同時,在清單中建立特定元素,具體建立方式取決於大家在專案建立過程中的設定。大家可以手動向清單中新增其它元素,例如新增其它Activity。

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

大家可能還需要向清單中新增其它元素,其中包括uses-permission元素,用於羅列應用所要求的許可權——使用者會在安裝應用之前觀看到該列表。許可權中包含多種操作條目,例如通過網際網路獲取資料、寫入儲存或者訪問裝置上的其它功能——如相機。清單還會列舉應用程式所能支援的裝置型別以及其它一些應用程式元件(例如後臺服務)。

6. 其它檔案

講到這裡,我們已經談到了大家需要了解的Android應用程式專案結構中的各大主要方面。隨著對Android開發的學習,大家將在今後經常與這些內容打交道。通過Eclipse,我們還會看到專案中包含的其它一些檔案及目錄,不過就目前來說基本都可以直接忽略。

正如在前面看到的,大家可以利用“R.”語法實現資源引用。Eclipse以及管理系統的ADT都會引用應用中來自Java的資源。當大家在專案中對這些資源進行新增或者編輯時,Eclipse會將對應內容寫入“R.java”檔案,從而幫助我們利用“R.”進行資源引用。當大家開始處理自己的Java檔案,會在引用時看到Eclipse彈出的提示資訊——這種機制能簡化對應用資源的管理工作。“R.java”檔案被儲存在“gen”資料夾中。請注意:千萬不要嘗試直接編輯這個檔案,它會在我們編輯專案資源時自動生成。系統會通過為應用中的每項資源分配惟一整數ID的形式管理這一過程。

提示:當大家開始嘗試Android應用程式開發時,可能會在使用R時遇到問題。如果Eclipse顯示任何與R相關的錯誤資訊,特別是“R無法被解析為一個變數”,則需要檢查類檔案的起始內容,看看其中是否存在“R”的匯入語句,例如“import android.R;”。如果找到了對應內容,特別是在已經將程式碼複製並貼上到檔案中後,請刪除這一匯入語句。如果遇到其它與R相關的提示,請確保資原始檔當中不存在錯誤。如果問題仍然存在,嘗試利用“Project”,“Clean”清理專案。當一切努力皆告失敗時,試著重新啟動Eclipse。

總結

在今天的文章中,我們瞭解了關於Android專案結構的基礎知識。大家可以再花點時間隨意檢視專案中的其它檔案及資料夾,藉此瞭解專案的整體結構。在接下來的後續教程中,我們將在應用中建立使用者介面元素並處理使用者互動操作。我們還會探討關於Java程式設計的基本特性,藉此進一步提升自己對Android開發專案的理解。

相關文章