閱讀694 返回首頁    go 技術社區[雲棲]


Android UI”設計官方教程

我們曾經給大家一個《MeeGo移動終端設備開發UI設計基礎教程》,同時很多朋友都在尋找Android UI開發的教程,我們從Android的官方開發者博客找了一份幻燈片,介紹了一些Android UI設計,我們把這個教程整理出來,希望大家喜歡。

想了解全部Android UI教程內容請點擊51CTO獨家專題:穀歌官方教程:Android UI設計技巧

P1

P2

作為開發者,為啥我們要關心UI,前麵的一堆通通可以忽略掉,直接跳到最後一條。因為好的UI設計可以幫助我們賣出更多拷貝,賺到更多錢。

簡介

這個教程包含5個部分:

◆該做什麼,不該做什麼

◆設計哲學和考量

◆你必須了解的 UI 框架特性

◆新的 UI 設計模式

◆圖標和準則

UI設計5不要

Don’t:

◆不要照搬你在其它平台的UI設計,應該讓用戶感覺是在真正使用一個 Android 軟件,在你的商標顯示和平台整體觀感之間做好平衡

◆不要過度使用模態對話框

◆不要使用固定的絕對定位的布局

◆不要使用px單位,使用dp或者為文本使用sp

◆ 不要使用太小的字體

UI設計9要素:

Do:

◆為高分辨率的屏幕創建資源(縮小總比放大好)

◆ 需要點擊的元素要夠大

◆圖標設計遵循 Android 的準則

◆ 使用適當的間距(margins, padding)

◆ 支持D-pad和trackball導航

◆正確管理活動(activity)堆棧

◆ 正確處理屏幕方向變化

◆使用主題/樣式,尺寸和顏色資源來減少多餘的值

◆和視覺交互設計師合作!

4則Android UI的設計哲學:

◆幹淨而不過於簡單

◆關注內容而非修飾

◆保存一致,讓用戶容易投入其中,可附加少許變化

◆使用雲端服務(存儲和同步用戶資料)來加強用戶體驗

優秀界麵的設計5條準則:

◆關注用戶

◆顯示正確的內容

◆給予用戶適當的回饋

◆有章可循的行為模式

◆容忍錯誤

關注用戶:

◆了解你的用戶(年齡,技能,文化,對你的應用的需求,使用的設備,何時何地如何使用設備)

◆‘用戶優先’的設計心態 (用戶通常是任務導向的行為模式)

◆更早,更頻繁的由真實用戶來測試

 

顯示正確的內容:

◆最常用的操作需要最快被用戶看到並且可用

◆不太常用的功能可以放到菜單裏麵

 

給予用戶適當的回饋:

◆交互式的UI元素最少需要反映出4種不同的狀態 (default,disabled,focused,pressed)

◆保證操作的結果是清晰可見的

◆多給予用戶進度提示,但是不要幹擾他們當前的操作

 

 有章可循的行為模式:

◆行為模式遵循用戶的期望(正確的操作活動堆棧,顯示用戶期望看到的信息和動作)

◆使用合適的方式來加強功能可見性(可點擊的元素就應該看起來是可以點擊的)

◆如果用戶完成一項任務需要複雜的操作,重新思考你的設計!!!

 

容忍錯誤:

◆隻允許有意義的操作(適當禁用一些按鈕)

◆盡量減少不可回退的操作

◆允許回退(undo)比使用確定對話框更好(實際上,應該盡量少用確定對話框,它對用戶是一種幹擾)

“如果錯誤是可能發生的,那它就一定會發生。”

——Donald Norman, The Design of Everyday Things 作者

設計需要考量的8地方:

◆屏幕的物理尺寸

◆屏幕密度

◆屏幕的方向(豎向和橫向)

◆主要的UI交互方式(觸屏還是使用D-pad/trackball)

◆軟鍵盤還是物理鍵盤

◆了解不同設備之間的相異之處是非常重要的!

◆閱讀CDD,學習設備可能差異的地方

◆了解屏幕尺寸和密度分類

Android UI 框架特性

你必須了解(使用)的 UI 框架特性。

使用相對布局管理界麵元素。

譯者注:相對布局和線性布局是Android裏麵常用的兩種布局,線性布局比較簡單,而相對布局可以做出比較複雜的布局管理,所以僅僅了解線性布局,很多時候是不夠的。不過以作者之前Qt的經驗來看,Android裏麵的布局管理功能都比較陽春也不太容易使用,不過這可能是跟移動平台的性能考量有關係。

合理使用資源修飾符

使用資源修飾符來修飾同一套資源的多個不同版本。

◆一個apk包裏麵會包含所有的資源文件。

◆係統在運行時會根據軟硬件環境來自動選擇相應修飾符版本的資源。

譯者注:最常用的修飾符可能是locale修飾符(製作多語文本),dpi修飾符(為不同密度的屏幕製作不同尺寸的圖標和皮膚),orientation修飾符(為橫屏和豎屏提供不同的UI布局)。如果係統找不到對應的修飾符版本,它就會選擇無修飾符的版本,這個版本通常也是所謂的默認選擇。

9-patch drawables

使用 9-patch drawables – foo.9.png

◆9-patch drawables 的語法跟CSS3 border image 類似

◆根據邊緣的像素寬度切割出不同的拉伸區域

◆最好同時提供 mdpi 和 hdpi 的版本

譯者注:drawables 在 Android 裏麵跟 WPF 裏麵的 Drawing 類似,用於定義一個可繪製的對象,包括位圖,刷子,填充顏色或者以上物件的組合等等。所謂 9-patch drawables,就是將一個 drawable 按照定義的 4 個邊緣的寬度大小切割成9個區域,包括4個角落,4條邊緣和一個中心區域,當把這個 drawable 繪製到一個任意矩形區域時,drawable 的各個區域有不同的拉伸控製(角落不拉伸,橫邊橫向拉伸,豎邊豎向拉伸,中心區域橫豎向都拉伸)。通常使用 9-patch drawable 一般是為了繪製出比較漂亮的帶圓角背景,這樣可以避免圓角及邊緣被任意拉伸導致變形。當然,如果你的程序裏麵繪製的圖像和目標區域大小完全一樣,就不需要那麼麻煩,不過以 Android 的狀況來說,為了適應多種設備,最好不要事先假設目標區域的像素大小。

使用狀態列表和多層疊加來製作具備複雜效果的可繪製圖像

使用 Selector (state list) drawables (狀態列表)來提供不同狀態(normal,disabled,focused,pressed…)下的繪製圖像。

使用 Layer drawables (多層疊加)來製作具備複雜效果的可繪製圖像。

譯者注:所謂多層疊加,使用PS來製作圖標和皮膚的同學可能都清楚,比如說一個按鈕的PS模板通常會包括所謂的background層定義底色,mask層定義輪廓,shine層定義前景的高亮效果。而 Android 裏麵允許你直接在 XML 腳本裏麵使用 Layer drawables 的語法來定義上述的多層疊加效果,這樣可能比在PS裏麵直接做好要更靈活一些,並且有的層可以是來自png位圖,有的層可以是直接通過 XML 腳本生成(比如純色,過渡色等等)。


https://mobile.51cto.com/android-223416.htm


最後更新:2017-04-02 16:47:52

  上一篇:go iOS中block實現的探究
  下一篇:go myeclipse中項目不編譯解決方法