本次學習主要是說android的項目的各個文件的作用,以及相互之間的調用,對於學習andriod軟件開發有很大的好處。只要了解運行機制才能更好的控制各個模塊和用戶的交互。同時這樣能更好的了解他的運行機制以及生命周期。
通過上一篇文章,大概了解了Android用戶界面的設計方式,以及如何通過XML來設計界面。並且完成了一個非常簡單的示例。
在上一篇文章中,涉及到了一些資源文件,直觀點說,就是res目錄下的那些目錄和文件,常用的有:
- res/drawable/ 用來存放圖片文件
- res/layout/ 用來存放布局定義文件
- res/values/ 用來存放一些變量、參數等文件
這些資源文件都是獨立於代碼而存在的,那麼在代碼中又是如何訪問到這些資源的呢?
在 Android的代碼中,有一個文件比較奇怪,第一次接觸到Android代碼的人都應該迷惑過,這個文件就是
R.java,在R.java的注釋部分, 有這樣一段話:“
AUTO-GENERATE FILE. DO NOT MODIFY”,這個文件是自動生成的,不要修改。
- 這個文件就是Java代碼和獨立於Java代碼的資源文件之間的訪問窗口,Java程序可以通過R.java來訪問那些資源文件。
- 這個文件是在程序編譯過程中由
aapt(Android Asset Packaging Tool) 自動生成
- 這個文件中的屬性都是public static final的,所以可以直接在Java代碼中引用,每個屬性都代表一個資源,看起來就像為每個資源都定義了一個ID,然後通過這個ID來訪問資源
- 所有的資源文件都被編譯進最後生成的二進制包中,這樣能夠帶來很高的性能和效率
按照前面的示例,那麼在R.java中會存在像這樣一段代碼:
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int icon=0x7f020000;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
}
}
這裡面的main就是由res/layout/main.xml生成的,其他兩個常量是由res/drawable/下icon.png和res/values/strings.xml生成的。
接下來在看一下,如何在Java代碼中使用這個R.java,創建一個文件Adventure.java :(開始快樂的學習旅程^_^)
package com.penguin.adventure;
import android.app.Activity;
import android.os.Bundle;
public class Adventure
extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
注意這其中的R.layout.main,通過setContextView(),被Java程序調用。
這段代碼中引入了另外一個非常重要的概念:
Activity,到目前為止,已經介紹的另外兩個比較重要的概念是 ViewGroup和View。如果套用時髦的MVC來理解的話:ViewGroup和View屬於View領域的東西,Activity可以理解為 Control領域的東西,雖然可以這麼類比著來理解,但是Activity其實做了更多的事情,由它將View和一些數據、操作等結合在一起,完成一個相對完整的行為、活動。所以,任何 View要被顯示,必須通過Activity來進行。這樣每個Activity都會包含特定的行為,多個Activity互相合作,最終組成一個完整的 Android程序。
在示例的Activity中,有一個onCreate()方法,這個方法會在此Activity被創建的時刻調用。在方法內部,設置此 Activity的視圖為R.layout.main中定義的視圖,也就是res/layout/main.xml中定義的視圖 (視圖、布局、GUI、UI在這裡已經混合使用了,並且他們意義相同,後文統一用View表示)。
Activity所包含的內容很多,會用單獨的一篇文章來詳細介紹。
說到此處,我們應該知道如何創建一個View,並通過Activity將其顯示在屏幕上。接下來事情,就是用戶如何和這個Activity交互。