1. 程式人生 > >Android學習筆記2:Hello World程式解析

Android學習筆記2:Hello World程式解析

《第一行程式碼——Android》郭霖著
Android Studio入門到精通

Android Studio與Eclipse的一些不同

Android Studio是基於IDEA的,IDEA 全稱IntelliJ IDEA,是java語言開發的整合環境。IDEA與Eclipse有很大的區別,它們主要的不同在這篇文章中有詳細的說明,在此就不贅述了。所以AS新建的時候有new application和new module開發。IDEA沒有工作空間這樣的說法。具體來說有以下三點:

  1. android studio是單工程的開發模式
  2. android studio中的application相當於eclipse裡的workspace概念
  3. android studio中的module相當於eclipse裡的project概念

Android Studio目錄結構

新建工程專案後切換到“project”模式下的目錄結構如下圖所示:
目錄1.PNG
* .idea:AS生成的工程配置檔案,類似Eclipse的project.properties。
* app:AS建立工程中的一個Module。
* gradle:構建工具系統的jar和wrapper等,jar告訴了AS如何與系統安裝的gradle構建聯絡。
* External Libraries:不是一個資料夾,只是依賴lib檔案,如SDK等。

開啟“app”摺疊項的目錄結構如下圖所示:
目錄2


* build:構建目錄,相當於Eclipse中預設Java工程的bin目錄,滑鼠放在上面右鍵Show in Exploer即可開啟資料夾,編譯生成的apk也在這個目錄的outs子目錄,不過在AS的工程裡是預設不顯示out目錄的,就算有編譯結果也不顯示,右鍵開啟通過資料夾直接可以看。
* libs:依賴包,包含jar包和jni等包。
* src:包括java程式碼和資原始檔。在src目錄下有一個main的分組,同時劃分出java和res兩個資料夾,java資料夾則相當於Eclipse下的src資料夾,res目錄結構則一樣。同時在main中還有一個AndroidManifest.xml檔案,它記錄著App基本資訊(Android管理檔案)。在src下的 build.gradle則是Module的Gradle構建指令碼。

Hello World程式分析

首先開啟AndroidManifest.xml檔案,從中可以找到如下程式碼:

<activity android:name=".MainActivity">
     <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
</activity>

這段程式碼表示對MainActivity這個活動進行註冊,沒有在AndroidManifest.xml裡註冊的活動是不能使用的。其中intent-filter裡的兩行程式碼非常重要,<action android:name= "android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" />表示MainActivity是這個專案的主活動,在手機上點選應用圖示,首先啟動的就是這個活動。你在啟動時看到的介面,其實就是MainActivity。

然後,開啟MainActivity.java。你可以看到MainActivity是繼承自Activity的。。Activity是Android系統提供的一個活動基類,我們專案中所有的活動都必須要繼承它才能擁有活動的特性。我們來看一下onCreate方法。

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
}

onCreate()方法是一個活動被建立時必定要執行的方法。方法中的第一行程式碼很容易理解,就是執行父類中的onCreate()方法。第二行呼叫了setContentView()方法,就是這個方法給當前的活動引入了一個activity_main佈局。R.layout.activity_main是一種引用資源的格式,此處引用了layout中的activity_main佈局。(這是在程式碼中引用資源的格式,在xml中可以通過@xxx/xxxxx的方式來引用。)讓我們開啟layout中的activity_main.xml看看究竟寫了什麼吧。

開啟activity_main.xml後在左下角選擇Text。(當然,Design檢視可以讓我們視覺化地看到layout介面。)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    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.chamlhy.hello.helloworld.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />
</RelativeLayout>

看到程式碼中有有一個TextView,這是Android系統提供的一個控制元件,用於在佈局中顯示文字的。其中text設定為“Hello World!”,這就是我們應用介面上顯示的文字了。