通過(guò)上一篇文章,大概了解了Android用戶(hù)界面的設計方式,以及如何通過(guò)XML來(lái)設計界面。并且完成了一個(gè)非常簡(jiǎn)單的示例。
在上一篇文章中,涉及到了一些資源文件,直觀(guān)點(diǎn)說(shuō),就是res目錄下的那些目錄和文件,常用的有:
這些資源文件都是獨立于代碼而存在的,那么在代碼中又是如何訪(fǎng)問(wèn)到這些資源的呢?
在 Android的代碼中,有一個(gè)文件比較奇怪,第一次接觸到Android代碼的人都應該迷惑過(guò),這個(gè)文件就是R.java,在R.java的注釋部分, 有這樣一段話(huà):“AUTO-GENERATE FILE. DO NOT MODIFY”,這個(gè)文件是自動(dòng)生成的,不要修改。
按照前面的示例,那么在R.java中會(huì )存在像這樣一段代碼:
public static final class layout {public static final int main=0x7f030001;}這里面的main就是由res/layout/main.xml生成的。
接下來(lái)在看一下,如何在Java代碼中使用這個(gè)R.java,創(chuàng )建一個(gè)文件Main.java :
package com.roiding.study;import android.app.Activity;import android.os.Bundle;public class Main extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);}}注意這其中的R.layout.main,通過(guò)setContextView(),被Java程序調用。
這段代碼中引入了另外一個(gè)非常重要的概念:Activity,到目前為止,已經(jīng)介紹的另外兩個(gè)比較重要的概念是ViewGroup和View。如果套用時(shí)髦的MVC來(lái)理解的話(huà):ViewGroup和View屬于View領(lǐng)域的東西,Activity可以理解為Control領(lǐng)域的東西,雖然可以這 么類(lèi)比著(zhù)來(lái)理解,但是Activity其實(shí)做了更多的事情,由它將View和一些數據、操作等結合在一起,完成一個(gè)相對完整的行為、活動(dòng)。所以,任何 View要被顯示,必須通過(guò)Activity來(lái)進(jìn)行。這樣每個(gè)Activity都會(huì )包含特定的行為,多個(gè)Activity互相合作,最終組成一個(gè)完整的 Android程序。
在示例的Activity中,有一個(gè)onCreate()方法,這個(gè)方法會(huì )在此Activity被創(chuàng )建的時(shí)刻調用。在方法內部,設置此Activity的視圖為R.layout.main中定義的視圖,也就是res/layout/main.xml中定義的視圖 (視圖、布局、GUI、UI在這里已經(jīng)混合使用了,并且他們意義相同,后文統一用View表示)。
Activity所包含的內容很多,會(huì )用單獨的一篇文章來(lái)詳細介紹。
說(shuō)到此處,我們應該知道如何創(chuàng )建一個(gè)View,并通過(guò)Activity將其顯示在屏幕上。接下來(lái)事情,就是用戶(hù)如何和這個(gè)Activity交互。
聯(lián)系客服