Android四大組件之Activity(活動)及其布局的創建與加載布局
什么是Activity ?
活動(Activity)是包含用戶界面的組件,主要用於和用戶進行交互的,一個應用程序中可以包含零個或多個活動.
手動創建Activity的過程詳解
到現在為止,你還沒有手動創建過活動呢,在第一個安卓工程中,HelloWorldActivity是ADT幫我們創建的,手動創建活動可以加深我們的理解,因此現在是時候應該自己動手了.
首先,你需要再新建一個 Android 項目,項目名可以叫做 ActivityTest,包名我們就使用 默認值 com.example.activitytest。因為是自己手動創建Activity所以我們在創建Android項目時,不需要再勾選Create activity這一項,且它默認是打勾的
點擊 Finish,項目就創建完成了,還有一點需要注意的是我們在操作當前項目的時候,建議把其他的安卓項目關閉
僅打開當前工作所需要的項目,不然我 保證以后你會在這方面吃虧
手動創建Activity
目前 ActivityTest 項目的 src 目錄應該是空的,你應該在 src 目錄下先添加一個包。點擊 Eclipse 導航欄中的 File→New→Package,在彈出窗口中填入我們新建項目時使用的默認包名 com.example.activitytest,點擊 Finish。
現在右擊 com.example.activitytest 包→New→Class,會彈出新建類的對話框,我們新建 一個名為 FirstActivity 的類,並讓它繼承自 Activity,點擊 Finish 完成創建,你需要知道,項目中的任何活動都應該重寫 Activity 的 onCreate()方法
到這里我們就已經把Activity創建好了
下面我們來說說布局的創建與加載
Android 程序的設計講究邏輯和視圖分離,最好每一個活動都能對應一 個布局,布局就是用來顯示界面內容的,因此我們現在就來手動創建一個布局文件。 右擊 res/layout 目錄→New→Android XML Layout File,會彈出創建布局文件的窗口。我們給這 個布局文件命名為 first_layout,根元素就默認選擇為 LinearLayout
點擊 Finish 完成布局的創建,如下圖
這是 ADT 為我們提供的可視化布局編輯器,你可以在屏幕的中央區域預覽當前的布局。 在窗口的最下方有兩個切換卡,左邊是 Graphical Layout,右邊是 first_layout.xml。Graphical Layout 是當前的可視化布局編輯器,在這里你不僅可以預覽當前的布局,還可以通過拖拽的 方式編輯布局。而 first_layout.xml 則是通過 XML 文件的方式來編輯布局,現在點擊一下 first_layout.xml 切換卡,可以看到如下代碼:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
</LinearLayout>
由於我們剛才在創建布局文件時選擇了 LinearLayout 作為根元素,因此現在布局文件中 已經有一個 LinearLayout 元素了。那我們現在對這個布局稍做編輯,添加一個按鈕
1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 android:orientation="vertical" >
6
7 <Button 8 android:id="@+id/button1"
9 android:layout_width="match_parent"
10 android:layout_height="wrap_content"
11 android:text="Button" />
12
13 </LinearLayout>
這里添加了一個 Button 元素,並在 Button 元素的內部增加了幾個屬性。android:id 是給 當前的元素定義一個唯一標識符,之后可以在代碼中對這個元素進行操作.
如果你需要在 XML 中引用一個 id,就使用@id/id_name 這種語法,而如果你需要在 XML 中 定義一個 id,則要使用@+id/id_name 這種語法。隨后 android:layout_width 指定了當前元素 的寬度,這里使用 match_parent 表示讓當前元素和父元素一樣寬。android:layout_height 指定 了當前元素的高度,這里使用 wrap_content,表示當前元素的高度只要能剛好包含里面的內 容就行。android:text 指定了元素中顯示的文字內容
現在按鈕已 經添加完了,你可以點回 Graphical Layout 切換卡,預覽一下當前布局
可以在中央的預覽區域看到,按鈕已經成功顯示出來了,這樣一個簡單的布局就編寫完 成了。那么接下來我們要做的,就是在活動中加載這個布局。
加載布局
可以看到,這里調用了 setContentView()方法來給當前的活動加載一個布局,而在 setContentView()方法中,我們一般都會傳入一個布局文件的 id。
項目中添加的任何資源都會在 R 文件中生成一個相應的資源 id,因此我們剛 才創建的 first_layout.xml 布局的 id 現在應該是已經添加到 R 文件中了。
在 AndroidManifest 文件中注冊
所有的活動都要在 AndroidManifest.xml 中進行注冊才能生效,那 么我們現在就打開 AndroidManifest.xml 來給 FirstActivity 注冊吧
可以看到,活動的注冊聲明要放在標簽內,這里是通過標簽來對 活動進行注冊的。首先我們要使用 android:name 來指定具體注冊哪一個活動,那么這里填入 的.FirstActivity 是什么意思呢?其實這不過就是 com.example.activitytest.FirstActivity 的縮寫 而已 。由於最 外層的 標簽 中已經通 過 package 屬性 指定了程 序的包 名是 com.example.activitytest,因此在注冊活動時這一部分就可以省略了,直接使用.FirstActivity 就足夠了。然后我們使用了 android:label 指定活動中標題欄的內容,標題欄是顯示在活動最 頂部的,待會兒運行的時候你就會看到,在<activity>標簽內加入了<intent-filter>標簽,並在里面添加了
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
這兩句聲明,表示如果你想讓 FirstActivity 作為我們這個程序的 主活動,即點擊桌面應用程序圖標時首先打開的就是這個活動,那就一定要加入這兩句聲明。 另外需要注意,如果你的應用程序中沒有聲明任何一個活動作為主活動,這個程序仍然是可 以正常安裝的,只是你無法在啟動器中看到或者打開這個程序,下面我們看看運行的結果
在界面的最頂部是一個標題欄,里面顯示着我們剛才在注冊活動時指定的內容。標題欄 的下面就是在布局文件 first_layout.xml 中編寫的界面,可以看到我們剛剛定義的按鈕