多圖詳解 “Android UI”設(shè)計官方教程
我們曾經(jīng)給大家一個《MeeGo移動終端設(shè)備開發(fā)UI設(shè)計基礎(chǔ)教程》,同時很多朋友都在尋找Android UI開發(fā)的教程,我們從Android的官方開發(fā)者博客找了一份幻燈片,介紹了一些Android UI設(shè)計,我們把這個教程整理出來,希望大家喜歡。
想了解全部Android UI教程內(nèi)容請點(diǎn)擊51CTO獨(dú)家專題:谷歌官方教程:Android UI設(shè)計技巧
作為開發(fā)者,為啥我們要關(guān)心UI,前面的一堆通通可以忽略掉,直接跳到***一條。因?yàn)楹玫腢I設(shè)計可以幫助我們賣出更多拷貝,賺到更多錢。
#p#
簡介
這個教程包含5個部分:
◆該做什么,不該做什么
◆設(shè)計哲學(xué)和考量
◆你必須了解的 UI 框架特性
◆新的 UI 設(shè)計模式
◆圖標(biāo)和準(zhǔn)則
#p#
UI設(shè)計5不要
Don’t:
◆不要照搬你在其它平臺的UI設(shè)計,應(yīng)該讓用戶感覺是在真正使用一個 Android 軟件,在你的商標(biāo)顯示和平臺整體觀感之間做好平衡
◆不要過度使用模態(tài)對話框
◆不要使用固定的絕對定位的布局
◆不要使用px單位,使用dp或者為文本使用sp
◆ 不要使用太小的字體
#p#
UI設(shè)計9要素:
Do:
◆為高分辨率的屏幕創(chuàng)建資源(縮小總比放大好)
◆ 需要點(diǎn)擊的元素要夠大
◆圖標(biāo)設(shè)計遵循 Android 的準(zhǔn)則
◆ 使用適當(dāng)?shù)拈g距(margins, padding)
◆ 支持D-pad和trackball導(dǎo)航
◆正確管理活動(activity)堆棧
◆ 正確處理屏幕方向變化
◆使用主題/樣式,尺寸和顏色資源來減少多余的值
◆和視覺交互設(shè)計師合作!
#p#
4則Android UI的設(shè)計哲學(xué):
◆干凈而不過于簡單
◆關(guān)注內(nèi)容而非修飾
◆保存一致,讓用戶容易投入其中,可附加少許變化
◆使用云端服務(wù)(存儲和同步用戶資料)來加強(qiáng)用戶體驗(yàn)
#p#
優(yōu)秀界面的設(shè)計5條準(zhǔn)則:
◆關(guān)注用戶
◆顯示正確的內(nèi)容
◆給予用戶適當(dāng)?shù)幕仞?/p>
◆有章可循的行為模式
◆容忍錯誤
關(guān)注用戶:
◆了解你的用戶(年齡,技能,文化,對你的應(yīng)用的需求,使用的設(shè)備,何時何地如何使用設(shè)備)
◆‘用戶優(yōu)先’的設(shè)計心態(tài) (用戶通常是任務(wù)導(dǎo)向的行為模式)
◆更早,更頻繁的由真實(shí)用戶來測試
顯示正確的內(nèi)容:
◆最常用的操作需要最快被用戶看到并且可用
◆不太常用的功能可以放到菜單里面
給予用戶適當(dāng)?shù)幕仞仯?/strong>
◆交互式的UI元素最少需要反映出4種不同的狀態(tài) (default,disabled,focused,pressed)
◆保證操作的結(jié)果是清晰可見的
◆多給予用戶進(jìn)度提示,但是不要干擾他們當(dāng)前的操作
有章可循的行為模式:
◆行為模式遵循用戶的期望(正確的操作活動堆棧,顯示用戶期望看到的信息和動作)
◆使用合適的方式來加強(qiáng)功能可見性(可點(diǎn)擊的元素就應(yīng)該看起來是可以點(diǎn)擊的)
◆如果用戶完成一項(xiàng)任務(wù)需要復(fù)雜的操作,重新思考你的設(shè)計!!!
容忍錯誤:
◆只允許有意義的操作(適當(dāng)禁用一些按鈕)
◆盡量減少不可回退的操作
◆允許回退(undo)比使用確定對話框更好(實(shí)際上,應(yīng)該盡量少用確定對話框,它對用戶是一種干擾)
#p#
“如果錯誤是可能發(fā)生的,那它就一定會發(fā)生。”
——Donald Norman, The Design of Everyday Things 作者
設(shè)計需要考量的8地方:
◆屏幕的物理尺寸
◆屏幕密度
◆屏幕的方向(豎向和橫向)
◆主要的UI交互方式(觸屏還是使用D-pad/trackball)
◆軟鍵盤還是物理鍵盤
◆了解不同設(shè)備之間的相異之處是非常重要的!
◆閱讀CDD,學(xué)習(xí)設(shè)備可能差異的地方
◆了解屏幕尺寸和密度分類
#p#
Android UI 框架特性
你必須了解(使用)的 UI 框架特性。
使用相對布局管理界面元素。
譯者注:相對布局和線性布局是Android里面常用的兩種布局,線性布局比較簡單,而相對布局可以做出比較復(fù)雜的布局管理,所以僅僅了解線性布局,很多時候是不夠的。不過以作者之前Qt的經(jīng)驗(yàn)來看,Android里面的布局管理功能都比較陽春也不太容易使用,不過這可能是跟移動平臺的性能考量有關(guān)系。
#p#
合理使用資源修飾符
使用資源修飾符來修飾同一套資源的多個不同版本。
◆一個apk包里面會包含所有的資源文件。
◆系統(tǒng)在運(yùn)行時會根據(jù)軟硬件環(huán)境來自動選擇相應(yīng)修飾符版本的資源。
譯者注:最常用的修飾符可能是locale修飾符(制作多語文本),dpi修飾符(為不同密度的屏幕制作不同尺寸的圖標(biāo)和皮膚),orientation修飾符(為橫屏和豎屏提供不同的UI布局)。如果系統(tǒng)找不到對應(yīng)的修飾符版本,它就會選擇無修飾符的版本,這個版本通常也是所謂的默認(rèn)選擇。
#p#
9-patch drawables
使用 9-patch drawables – foo.9.png
◆9-patch drawables 的語法跟CSS3 border image 類似
◆根據(jù)邊緣的像素寬度切割出不同的拉伸區(qū)域
◆***同時提供 mdpi 和 hdpi 的版本
譯者注:drawables 在 Android 里面跟 WPF 里面的 Drawing 類似,用于定義一個可繪制的對象,包括位圖,刷子,填充顏色或者以上物件的組合等等。所謂 9-patch drawables,就是將一個 drawable 按照定義的 4 個邊緣的寬度大小切割成9個區(qū)域,包括4個角落,4條邊緣和一個中心區(qū)域,當(dāng)把這個 drawable 繪制到一個任意矩形區(qū)域時,drawable 的各個區(qū)域有不同的拉伸控制(角落不拉伸,橫邊橫向拉伸,豎邊豎向拉伸,中心區(qū)域橫豎向都拉伸)。通常使用 9-patch drawable 一般是為了繪制出比較漂亮的帶圓角背景,這樣可以避免圓角及邊緣被任意拉伸導(dǎo)致變形。當(dāng)然,如果你的程序里面繪制的圖像和目標(biāo)區(qū)域大小完全一樣,就不需要那么麻煩,不過以 Android 的狀況來說,為了適應(yīng)多種設(shè)備,***不要事先假設(shè)目標(biāo)區(qū)域的像素大小。
#p#
使用狀態(tài)列表和多層疊加來制作具備復(fù)雜效果的可繪制圖像
使用 Selector (state list) drawables (狀態(tài)列表)來提供不同狀態(tài)(normal,disabled,focused,pressed…)下的繪制圖像。
使用 Layer drawables (多層疊加)來制作具備復(fù)雜效果的可繪制圖像。
譯者注:所謂多層疊加,使用PS來制作圖標(biāo)和皮膚的同學(xué)可能都清楚,比如說一個按鈕的PS模板通常會包括所謂的background層定義底色,mask層定義輪廓,shine層定義前景的高亮效果。而 Android 里面允許你直接在 XML 腳本里面使用 Layer drawables 的語法來定義上述的多層疊加效果,這樣可能比在PS里面直接做好要更靈活一些,并且有的層可以是來自png位圖,有的層可以是直接通過 XML 腳本生成(比如純色,過渡色等等)。
【編輯推薦】