鍍金池/ 教程/ Android/ 用戶界面設(shè)計
Dialog 顯示圖像
線程 Bezier 曲線
創(chuàng)建應(yīng)用程序框架
引路蜂二維圖形庫簡介及顏色示例
Android 應(yīng)用基本概念
Intents 和 Intent Filters
安裝開發(fā)環(huán)境
Option Menu 畫筆示例
自定義對話框 Transform
數(shù)據(jù)綁定 Data Binding
概述
Broadcast Receiver 短信觸發(fā)示例
發(fā)布應(yīng)用
自定義 Adapter 顯示列表
RadioButton 多邊形及路徑繪制
訪問 Internet 繪製在線地圖
第一個應(yīng)用 Hello World
Activities
Button 畫刷示例
使用資源 Resources
Context Menu 繪制幾何圖形
用戶界面設(shè)計
引路蜂二維圖形繪制實例功能定義

用戶界面設(shè)計

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

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

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

http://wiki.jikexueyuan.com/project/android-development-tutorial/images/11.png" alt="" />

Android 的用戶界面其實就是指 ContentView 的設(shè)計?!癡iew”開始會使人產(chǎn)生誤解,在其它平臺“View”一般指類似Form的概念。而在 Android 平臺上 View 是 UI 組件,相當(dāng)于其他平臺的Component,ViewGroup 相當(dāng)于其它平臺的 Container,如下圖所示:

http://wiki.jikexueyuan.com/project/android-development-tutorial/images/12.png" alt="" />

有了這個對應(yīng)關(guān)系就很容易將你已有的用戶界面設(shè)計知識用在 Android 的用戶界面設(shè)計上來。

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

理解了 Android 的 View 和 ViewGroup 之后,具體設(shè)計用戶界面并不復(fù)雜,一般來說 ViewGroup定義它的子 View 的布局 Layout,也就是其它 View (文本框,標(biāo)簽等控件或是其它 ViewGroup)在用戶界面的位置安排。如上圖所示,這個層次關(guān)系可以嵌套。通過嵌套,你可以定義出任意用戶界面。

http://wiki.jikexueyuan.com/project/android-development-tutorial/images/13.png" alt="" />

Android 中的基本布局如下:

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

http://wiki.jikexueyuan.com/project/android-development-tutorial/images/14.png" alt="" />

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

http://wiki.jikexueyuan.com/project/android-development-tutorial/images/15.png" alt="" />

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

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