Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> 我的Android學習之旅[3]——從簡單的Hello World來剖析項目結構

我的Android學習之旅[3]——從簡單的Hello World來剖析項目結構

編輯:Android開發實例

    開發環境搭建完了,那麼讓我們建個簡單的項目,來了解下Android項目到底是怎麼樣的一個結構~

    1、建立一個簡單的Hello World程序

    步驟1:啟動Eclipse,選擇 New—>Other,如下圖所示

     

    

    步驟2:在出現的窗口中選擇Android Project,如下圖所示:

     

    

    步驟3:此時會出現如下的對話框,填入相應的項目屬性,對應如下:    

名 稱

屬 性 含 義

Project Name

工程名字,物理上就是最外層文件夾的名字

Build Target

應用程序針對的目標設備

Application Name

應用程序的名稱,將顯示在應用程序的標題欄

Package Name

包名稱

Create Activity

是否讓ADT自動創建一個默認的繼承自Activity的類,該類是一個啟動和控制程序的類

Min SDK Version

應用程序所要求的API版本

       

       

                                             創建新的Android項目      

  

    步驟4:點擊Finish按鈕完成項目的創建,在包管理器中展開項目後如下圖所示:

 

    

    2、運行創建的Hello World,看下效果圖          

    步驟1:Eclipse菜單欄,選擇Run->Run Configurations..,如下圖

     

    

    步驟2:此時會在出現的以下窗口中,找到Android選項右鍵New,如圖

       

 

    步驟3:輸入新建的配置名稱,下圖中設為Android15

       

 

    步驟4:點擊Browse按鈕選中項目,如下圖所示

       

 

    步驟5:切換到Target選項卡,選擇上篇文章中建立的名為and15的AVD

    

 

    步驟6:在對話框中選擇Run選項,運行如下圖 

    

    

     

                                                      (按Ctrl+F12可以切換屏幕方向)

  

    3、項目結構的剖析 

    首先看下剛才建立的Android項目的結構,如下圖所示:      

     從上圖中可以看出,新創建的Android項目包含了src、gen、asset、res等目錄,下面就這些目錄分別介紹:

     ²  Src目錄

         從目錄名就可猜測出這個目錄是用來存放程序源碼的,基本上一個Android應用程序的程序邏輯以及功能代碼都是寫在該目錄下的,不同功能的類可以通過Java      包的機制來進行區分。而我們創建的Hello World工程由於勾選了Create Activity選項,所以在該目錄下生成了繼承自Activity的啟動與控制程序的類HelloWorld,      打開自動生成的HelloWorld.java源文件,內容如下:

      

         從上述代碼中,大致可以猜測出當該類初次被創建的時候,會將當前的View設置為R.layout.main,即當前的界面是R.layout.main(這兒只是進行猜測)。那        麼我們很容易產生疑問,Gen目錄下生成的R類究竟有什麼用?R.layout.main又究竟是什麼?在接下來的內容中會給出解答~

      

     ²  Gen目錄

         Gen目錄是ADT插件幫我們生成的,並在該目錄與主程序在同一級目錄下生成R.Java文件(本程序在cnblogs.com包下),打開文件查看R類內容:

      

           這時候可以知道R.layout.main原來是一個16進制數,而從HelloWorld.java源文件來看,R.layout.main理應指向的是一個界面組件類,此處反而更像是個id,       卻又是作何解釋?

           其實,在Android應用程序中,ADT生成的R類是一個指向資源的類,更像是一個字典。在該字典中,包含了用戶界面、圖片、字串等各種資源對應的編號,         即以16進制表示的編號。所以由此可知,R.layout.main其實指向的是res/layout目錄下的main.xml界面描述性文件,該文件會在下面進行具體介紹。之所有用       R類,一個好處是在於程序在編譯的時候會對該類進行查閱,對於該類中不存在即應用程序中沒有使用到的資源則不會打包編譯進去,從而對程序進行瘦身。

       

     ²  Assets目錄

          該目錄目前是空的,因為我們沒有放任何東西進去(貌似是廢話)!那麼該目錄干啥用的呢?其實呢,在這個目錄可以放很多東西,諸如應用程序中使用到的多媒      體文件(音頻或者視頻文件)、圖片或者文本文件等。其同後面即將介紹的res目錄相似,也是存放資源文件的目錄,但與res目錄的不同之處在於res會被編譯器        所編譯,而assets則不會。也就是說應用程序運行的時候,res中的內容會在啟動的時候載入內存,asset只有在被用到的時候才會載入內存,所以一般將一些不經      常使用到的大資源文件存放在該目錄下。

      

     ²  res目錄

          在該目錄下主要是存放整個應用程序的資源文件,該目錄按照資源的種類默認分為三個子目錄,分別為drawable、layout和values目錄:

      Ø  drawable子目錄

          在該子目錄下主要存放的是一些圖片格式文件,支持的格式有.Png、.9.png和.jpg等位圖文件。

 

      Ø  layout子目錄

          在該子目錄下主要存放的是界面布局的XML文件,在Android的應用程序中有兩種方式生成用戶界面。一種是通過靜態的界面描述文件,另外一種就是通過Java

     代碼動態生成用戶界面。這時候讓我們看下上述R.layout.main指向的main.xml文件的內容:

     

         上述內容中第一行指出了xml文檔的版本以及編碼方式,第二行中的LinearLayout指出了界面的布局方式為線性布局,xmlns:android屬性指出了使用的           android架構,這個屬性是必須的,每個界面描述性文件中必須有一個架構申明。第三行則指出了界面的布局是垂直布局,第四行與第五行指出寬和高將撐滿整個父     容器。在該界面中只定義了一個TextView組件,並且該組件寬度撐滿父容器,高度則剛好適合,顯示的文本引用的是values目錄下string.xml中hello字符串變量     (值為Hello World,HelloWorld!,即運行時候顯示的那幾個字),其中@符號表示引用。

          

 

     Ø  values子目錄

      該目錄中包含了所有的XML格式的參數描述文件,如string.xml字符串描述文件、color.xml顏色描述文件、style.xml樣式描述文件和array.xml數組描述文件等。

 

     ²  AndroidManifest.xml文件

      應用程序描述文件,有Java開發經驗的對這個應該有種似曾相識的感覺吧~其內容如下所示:

      

           上述內容中第一行指出xml文檔版本以及編碼方式,第二行指出了主程序所在的包名,這樣在activity的android:name就直接設置成 .HelloWorld。如果我們      又添加一個activity類,但是該類處於包cnblogs.com.cn下,那麼該activity添加到上述xml文件中時候android:name需要設置成 .cn.HelloWorld2。四到五行        則指出了版本信息,第六行的application節點有且僅有一個,其icon屬性指出了應用程序安裝完後的桌面圖標,這兒通過@符號引用res/drawable目錄下的              icon.png圖片。在application節點之間,是我們程序中activity類,所有的添加的activity類可以通過寫在該描述性文件中進行注冊。從上圖中看出,該activity的i      intent-filter屬性指出該activity類是默認程序啟動時候第一個啟動的窗口。

 

     ²  default.properties文件

         該文件打開後,你會發現沒有注釋的文字只有一行,即指定了應用程序針對的目標設備以及相應的API Level。

    

     好了,從對一個簡單的Hello World項目的分析中,我們基本上就可以對Android項目結構有個系統的認識了。

轉自:http://www.cnblogs.com/royenhome/archive/2010/04/25/1719683.html

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved