Android簡明開發教程六:用戶界面設計

Activity是Android應用用戶界面的基本組成部件。但Activity本身並不提供用戶界面(User Interface)。從程序結構層次上來說,一個Android應用是類android.app.Application的一個實例, Application中可以包含多個android.app.Activity實例。每個Activity 帶一個Window類,這個類在Android平臺上沒有提供太多功能,主要可以用來控制標題欄(屏幕頂端)。比如設置UI全屏顯示可以使用如下代碼:

1
2
3
requestWindowFeature(Window.FEATURE_NO_TITLE);  
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,   
                                WindowManager.LayoutParams.FLAG_FULLSCREEN);

Activty缺省是不含用戶界面,如需顯示用戶界面,則可以調用setContentView()來設置Activity的ContentView。 ConentView描述了具體的UI組件,如文本框,標籤,列表框,圖片框的。

Android的用戶界面其實就是指ContentView的設計。“View”開始會使人產生誤解,在其它平臺“View”一般指類似Form的概念。而在Android平臺上View是UI組件,相當於其他平臺的Component,ViewGroup相當於其它平臺的Container,如下圖所示:

有了這個對應關係就很容易將你已有的用戶界面設計知識用在Android的用戶界面設計上來。

此外Android用戶界面設計一個推薦的方法是使用XML來描述UI,這也不是Android平臺的首創,Java ME Polish,WPF,Silverlight等都採用XML來描述UI,使用XML來描述的好處是將用戶界面和程序邏輯分開,可以做到用戶界面的改變不影響程序邏輯,程序邏輯的變動也可以不影響用戶界面,實際上是採用了MVC模式的設計。Activity 是MVC中的Controller,Activity的ContentView則是MVC中的View。如果你不想使用XML來描述UI,也可以使用代碼來創建UI,不過這種方法既麻煩,也增加了模塊之間的耦合度。

理解了Android的View和ViewGroup之後,具體設計用戶界面並不複雜,一般來說ViewGroup定義它的子View的佈局Layout,也就是其它View (文本框,標籤等控件或是其它ViewGroup)在用戶界面的位置安排。如上圖所示,這個層次關係可以嵌套。通過嵌套,你可以定義出任意用戶界面。

Android中的基本佈局如下:

FrameLayout
 最簡單的佈局對象
 在屏幕上故意保留的空白空間,你可以之後填充一個單獨的對象
 例如:一個你要更換的圖片
 所有子元素都釘到屏幕的左上角
 不能爲子元素指定位置
LinearLayout
 在一個方向上(垂直或水平)對齊所有子元素
 所有子元素一個跟一個地堆放
 一個垂直列表每行將只有一個子元素(無論它們有多寬)
 一個水平列表只是一列的高度(最高子元素的高度來填充)
TableLayout
 把子元素放入到行與列中
 不顯示行、列或是單元格邊界線
 單元格不能橫跨行,如HTML 中一樣
AbsoluteLayout
 使子元素能夠指明確切的X / Y 座標顯示在屏幕上
 (0,0)是左上角
 當你下移或右移時,座標值增加
 允許元素重疊(但是不推薦)
 注意:
 一般建議不使用AbsoluteLayout 除非你有很好的理由來使用它
 因爲它相當嚴格並且在不同的設備顯示中不能很好地工作


RelativeLayout
 讓子元素指定它們相對於其他元素的位置(通過ID 來指定)或相對於父佈局對象

如果不喜歡Eclipse IDE自帶的UI設計工具,可以使用免費Android UI設計軟件DroidDraw,下載DroidDraw

Android SDK的 ApiDemo中也介紹Android提供的各個UI組件(Menu,Dialog,TextView,Button,List等以及各個Layout)的用法。這裏就不一一介紹了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章