Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android學習指南之二:分析Android框架及Android程序的目錄結構

Android學習指南之二:分析Android框架及Android程序的目錄結構

編輯:關於android開發

       我們在使用某個系統進行開發時,有必要先大體了解下它的框架結構。Android開發同樣也需要先了解Android的系統框架,這對我們把握Android應用程序的整體很有幫助。另外,Android程序的目錄結構也需要在開發之前做一個大概的了解,明白每個文件的內容和作用。

       一、Android框架分析

        Android系統從底向上一共分了4層,每一層都把底層實現封裝,並暴露調用接口給上一層。

        下面是簡單翻譯的版本:

       1. Linux內核(Linux Kernel)

       1)Android運行在linux kernel 2.6之上,但是把linux內受GNU協議約束的部分做了取代,這樣在Android的程序可以用於商業目的。

       2)Linux 內核是硬件和軟件層之間的抽象層。

       2. 中間件

       1)中間件包括兩部分:核心庫和運行時(libraries & Android runtime)

       2)核心庫包括,SurfaceManager 顯示系統管理庫,負責把2D或3D內容顯示到屏幕;Media Framework 媒體庫,負責支持圖像,支持多種視頻和音頻的錄制和回放;SQlite 數據庫,一個功能強大的輕量級嵌入式關系數據庫;WebKit 浏覽器引擎等。

       3)Dalvik虛擬機:區別於Java虛擬機的是,每一個Android 應用程序都在它自己的進程中運行,都有一個屬於自己的Dalvik 虛擬機,這一點可以讓系統在運行時可以達到優化,程序間的影響大大降低。Dalvik虛擬機並非運行Java字節碼,而是運行自己的字節碼。

       3. 應用程序框架(Application Framework)

       1)豐富而又可擴展性的視圖(Views),可以用來構建應用程序, 它包括列表(lists),網格(grids), 文本框(text boxes),按鈕(buttons), 可嵌入的web 浏覽器。

       2)內容提供者(Content Providers)使得應用程序可以訪問另一個應用程序的數據(如聯系人數據庫), 或者共享它們自己的數據。

       3)資源管理器(Resource Manager)提供非代碼資源的訪問,如本地字符串,圖形,和布局文件( layoutfiles )。

       4)通知管理器(Notification Manager) 使得應用程序可以在狀態欄中顯示自定義的提示信息。

       5)活動管理器(Activity Manager) 用來管理應用程序生命周期並提供常用的導航回退功能。

       4. 應用程序 (Applications)

       Android 系統會內置一些應用程序包包括email 客戶端,SMS 短消息程序,日歷,地圖,浏覽器,聯系人管理程序等。所有的應用程序都是使用JAVA 語言編寫的。

       二、Android應用程序的目錄結構分析

       接下來讓我帶領大家解析一個Android程序的各個組成部分,這次我們拿一個Hello World做例子,雖然只是一個Hello World,但也是麻雀雖小五髒俱全,通過分析Hello World的目錄結構,讓我們對Android程序有一個整體全面的認識。

       Lesson2_HelloWorld 目錄結構:

       接下來我們逐個部分加以講解:

       1. Activity類 MainHelloWorld文件淺析

       Activity是Android中的視圖部分,負責界面顯示。

Java代碼
  1. package android.basic.lesson2.helloworld;import android.app.Activity;   
  2. import android.os.Bundle;public class MainHelloWorld extends Activity {   
  3. /** Called when the activity is first created. */  
  4. @Override  
  5. public void onCreate(Bundle savedInstanceState) {   
  6. super.onCreate(savedInstanceState);   
  7. setContentView(R.layout.main);   
  8. }   
  9. }  

       可以看到MainHelloWorld是Activity的子類,子類要重寫onCreate方法。setContentView(R.layout.main)方法是給Activity設置可以顯示的視圖(View),視圖由R類負責尋找。

        2. R文件淺析

        我們看到Gen目錄下有個R.Java文件,R文件由ADT自動生成,程序員不需要也不要去修改它,R文件負責調用應用程序中的非代碼資源。

Java代碼
  1. /* AUTO-GENERATED FILE.  DO NOT MODIFY.  
  2. *  
  3. * This class was automatically generated by the  
  4. * aapt tool from the resource data it found.  It  
  5. * should not be modified by hand.  
  6. */
  7. package android.basic.lesson2.helloworld;public final class R {   
  8. public static final class attr {   
  9. }   
  10. public static final class color {   
  11. public static final int red=0x7f050000;   
  12. }   
  13. public static final class drawable {   
  14. public static final int icon=0x7f020000;   
  15. }   
  16. public static final class id {   
  17. public static final int TextView01=0x7f060000;   
  18. }   
  19. public static final class layout {   
  20. public static final int main=0x7f030000;   
  21. }   
  22. public static final class string {   
  23. public static final int app_name=0x7f040001;   
  24. public static final int hello=0x7f040000;   
  25. public static final int tagline=0x7f040002;   
  26. }   
  27. }  

       從R文件中可以看到每一個資源都會有一個整數和它相對應。

       3. res/layout/main.xml文件淺析 – 布局layout

       我們看到有個res目錄,也就是resource目錄,這個目錄下存放資源文件,資源文件的統一管理,也是Android系統的一大特色。現在要注意看的是layout目錄下的main.xml。這個文件的內容是有關用戶界面布局和設計的。在桌面程序設計領域采用XML也許比較新穎,但是在網頁設計領域,這個就很平常了。同學們可以用html來類比xml在布局中的用途。

XML/HTML代碼
  1. <?xml version=”1.0″ encoding=”utf-8″?>  
  2. <LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”   
  3. android:orientation=”vertical”   
  4. android:layout_width=”fill_parent”   
  5. android:layout_height=”fill_parent”   
  6. android:gravity=”center”   
  7. >  
  8. <TextView  
  9. android:layout_width=”wrap_content”   
  10. android:layout_height=”wrap_content”   
  11. android:textColor=”#0f0″   
  12. android:textSize=”30px”   
  13. android:text=”@string/hello”   
  14. />  
  15. <TextView  
  16. android:text=”@string/tagline”   
  17. android:id=”@+id/TextView01″   
  18. android:layout_width=”wrap_content”   
  19. android:textSize=”14px”   
  20. android:textColor=”@color/red”   
  21. android:layout_height=”wrap_content”>  
  22. </TextView>  
  23. </LinearLayout>  

       從以上代碼可以看到整個程序界面由一個線性布局控件(LinearLayout)和2個文本框控件(TextView)組成。res的其他目錄裡的其他文件也都是相關的資源描述。

       4. AndroidManifest.xml文件淺析

       在每個應用程序的根目錄都會有一個AndroidManifest.xml文件,該文件向Android操作系統描述了,本程序所包括的組件,所實現的功能,能處理的數據,要請求的資源等等。學過Java Web開發的同學可以用Web應用程序裡的web.xml來類比這個AndroidManifest.xml文件。

XML/HTML代碼
  1. <?xml version=”1.0″ encoding=”utf-8″?>  
  2. <manifest xmlns:android=”http://schemas.android.com/apk/res/android”   
  3. package=”android.basic.lesson2.helloworld”   
  4. android:versionCode=”1″   
  5. android:versionName=”1.0″>  
  6. <application android:icon=”@drawable/icon” android:label=”@string/app_name”>  
  7. <activity android:name=”.MainHelloWorld”   
  8. android:label=”@string/app_name”>  
  9. <intent-filter>  
  10. <action android:name=”android.intent.action.MAIN” />  
  11. <category android:name=”android.intent.category.LAUNCHER” />  
  12. </intent-filter>  
  13. </activity></application>  
  14. <uses-sdk android:minSdkVersion=”8″ />  
  15. </manifest>  

       我們看到Manifest是根節點,節點屬性裡有versionCode和versionName來表示應用程序的版本;裡面可以包含0個或1個application元素,application可以包含多個activity組件等等,具體的內容我們在接下來的課程裡詳細講解。

       5. Android.jar文件淺析

       作為一個Java項目,通常情況下都會引入要用到的工具類,也就是Jar包,在Android開發中,絕大部分開發用的工具包都被封裝到一個名叫Android.jar的文件裡了。如果我們在Eclipse中展開來看,可以看到j2se中的包,apache項目中的包,還有Android自身的包文件。在這裡我們簡單浏覽一下Android的包文件:

android.app :提供高層的程序模型、提供基本的運行環境
android.content :包含各種的對設備上的數據進行訪問和發布的類
android.database :通過內容提供者浏覽和操作數據庫
android.graphics :底層的圖形庫,包含畫布,顏色過濾,點,矩形,可以將他們直接繪制到屏幕上.
android.location :定位和相關服務的類
android.media :提供一些類管理多種音頻、視頻的媒體接口
android.net :提供幫助網絡訪問的類,超過通常的java.net.* 接口
android.os :提供了系統服務、消息傳輸、IPC 機制
android.opengl :提供OpenGL 的工具
android.provider :提供類訪問Android 的內容提供者
android.telephony :提供與撥打電話相關的API 交互
android.view :提供基礎的用戶界面接口框架
android.util :涉及工具性的方法,例如時間日期的操作
android.webkit :默認浏覽器操作接口
android.widget :包含各種UI 元素(大部分是可見的)在應用程序的屏幕中使用

       本節課程就到這裡了。希望大家能對Android框架和Android程序的目錄結構有個大概的了解了,在以後的開發過程中會有越來越深入的理解。

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