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沒有工作空間這樣的說法。具體來說有以下三點:
- android studio是單工程的開發模式
- android studio中的application相當於eclipse裡的workspace概念
- android studio中的module相當於eclipse裡的project概念
Android Studio目錄結構
新建工程專案後切換到“project”模式下的目錄結構如下圖所示:
* .idea:AS生成的工程配置檔案,類似Eclipse的project.properties。
* app:AS建立工程中的一個Module。
* gradle:構建工具系統的jar和wrapper等,jar告訴了AS如何與系統安裝的gradle構建聯絡。
* External Libraries:不是一個資料夾,只是依賴lib檔案,如SDK等。
開啟“app”摺疊項的目錄結構如下圖所示:
* 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!”,這就是我們應用介面上顯示的文字了。