§1.2 Android專案結構及“Hello World”應用解析

戎碼倥傯發表於2016-10-14

書接上文,我們建立一個新的Android專案,進入Android Studio開發頁面,如下圖:

1-2-1

左側為專案工具視窗,通過專案工具視窗可以管理整個專案的相關檔案 右側為程式碼編輯區,我們可以在這裡進行Android程式的開發工作 底部為除錯區,在除錯區可以進行程式的斷點除錯、日誌列印,可以監視整個程式的記憶體消耗,從而有針對性的進行效能優化。

首先,通過檢視左側的專案工具視窗區,為大家介紹一個Android專案的基本結構:

1-2-2

如上圖所示,在這裡我們只需要關注圖中app目錄下的內容:

  • build目錄:構建目錄,相當於Java SE開發中的bin目錄,該目錄為自動生成的,我們不需要關心裡面的內容,也沒必要改動其中的內容。

  • libs目錄:依賴包目錄,我們通常將第三方jar包放置在該目錄下

  • src目錄:src目錄是我們日常開發中經常打交道的一個目錄,其中androidTest目錄和test目錄用於測試,此處不做介紹,我們著重介紹的是main目錄,main目錄分為:java目錄、res目錄、AndroidManifest.xml檔案

    java目錄:存放Java程式碼

    res目錄:存放資原始檔,其中:
    drawable存放圖片資源
    layout存放佈局檔案
    mipmap也是存放影像資源的,在使用上和drawable沒什麼區別,但在縮放方面做了一定的優化,因此,我們通常將圖示存在在mipmap中。
    value存放了一些字串資源,我們在後面章節會詳細介紹
    AndroidManifest檔案:是對整個Android專案的配置檔案


執行程式碼,得到執行結果:

1-2-3
可以看到,在手機上顯示出了“Hello World”字串。

以蓋房子為例,我們首先要有一張圖紙,即我們要蓋什麼樣的房子; 然後,我們要根據圖紙建造房子;當然,我們還要為房子在“有關部門”登記。

其實Android程式的執行和蓋房子的流程是類似的。

首先,檢視xml佈局檔案程式碼:activty_main.xml

<?xml version="1.0" encoding="utf-8"?>  
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"  
    android:id="@+id/activity_main"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:paddingBottom="@dimen/activity_vertical_margin"  
    android:paddingLeft="@dimen/activity_horizontal_margin"  
    android:paddingRight="@dimen/activity_horizontal_margin"  
    android:paddingTop="@dimen/activity_vertical_margin"  
    tools:context="com.rongma.helloworld.MainActivity">  
    <TextView  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:text="Hello World!" />  
</RelativeLayout>  

暫時不必知道這個佈局檔案程式碼的含義,我們只需要知道,這個檔案是用來“告訴機器”,我們要在手機上顯示“Hello World”字串。(類比到蓋房子,其實這就是圖紙)

然後,檢視Java程式碼:MainActivity.java

public class MainActivity extends Activity {  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
    }  
}  


不是什麼人都可以蓋房子的,為了解鎖“蓋房子”的技能,我們要讓MainActivity繼承自Activity類,即所有描述獨立頁面的類都要繼承自Activity類(或Activity的後代類),以此來獲得“蓋房子”技能。

然後,我們可以看到在onCreate方法中,呼叫了setContentView方法來獲取佈局。其中傳入的引數為R.layout.activity_main. 這個方法用於獲取到我們的“圖紙”,並根據“圖紙”來蓋這個房子,並對房子進行操作。那麼,此處的圖紙就是R.layout.activity_main.

R.java檔案是根據應用的資原始檔自動生成的Android應用字典,在這個檔案裡,我們可以找到Android佈局資源、圖片資源、字串資源等相關的對映。在這裡,R.layout.activity_main 其實相當於呼叫了layout資原始檔夾下的activity_main.xml佈局檔案

最後,要將“房子”登記到“有關部門”:

Android程式的“有關部門”------AndroidManifest.xml

之所以稱AndroidManifest請單檔案為“有關部門”,因為它是整個Android應用的全域性描述檔案,它說明了該應用的名稱、圖示、許可權、元件等。 這是初始狀態下,系統生成的AndroidManifest.xml清單檔案:

<?xml version="1.0" encoding="utf-8"?>  
<manifest xmlns:android="http://schemas.android.com/apk/res/android"  
    package="com.rongma.helloworld">  
    <application  
        android:allowBackup="true"  
        android:icon="@mipmap/ic_launcher"  
        android:label="@string/app_name"  
        android:supportsRtl="true"  
        android:theme="@style/AppTheme">  
        <activity android:name=".MainActivity">  
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />  
                <category android:name="android.intent.category.LAUNCHER" />  
            </intent-filter>  
        </activity>  
    </application>  
</manifest> 

在activity節點,我們可以看到android:name=".MainActivity" 此處相對應的就是com.rongma.helloworld.MainActivity檔案。也就是對MainActivity這個檔案進行了登記。
每一個頁面新建之後,都需要在清單檔案下進行註冊,註冊方法:

<activity android:name="Activity的檔名">  
</activity>  

如果這個頁面是“主頁”,即剛進入app時顯示的第一個頁面,其註冊方法:

<activity android:name="Activity的檔名">  
<intent-filter>  
                <action android:name="android.intent.action.MAIN" />  
                <category android:name="android.intent.category.LAUNCHER" />   
            </intent-filter>  
</activity>  


總結:

我們要讓“Hello World"顯示在頁面上
首先,要在res/layout資料夾下,寫一個xml佈局檔案(圖紙)
然後,新建一個類,繼承自Activity(解鎖建造技能),通過setContentView方法獲取佈局檔案(獲取圖紙)
最後,在AndroidManifest.xml檔案下,進行註冊(有關部門處登記)

(v0.9測試版 By 戎碼 @ 2016/10/14)

相關文章