天天看點

Android UX & UI 最佳實踐: 設計有效的導航

Android,有效的導航設計,簡化翻譯。

Best Practices for User Experience & UI

Designing Effective Navigation

  導航:幫助使用者有效直覺地使用你的應用。

Planning Screens and Their Relationships

  應用的資訊模型可以用實體關系圖表示(entity-relationship diagrams (ERDs))。

  定義出資訊模型之後,就可以定義你的app所需要的所有螢幕畫面。然後定義出螢幕之間的直接關系、跳轉邏輯。這樣就得到了screen map。

  之後就可以設計一些細節,比如導航跳轉按鈕之類的。

Planning for Multiple Touchscreen Sizes

  Android裝置是有不同的類型和尺寸的,比如手機、平闆,甚至還有電視。

  你的應用應該能夠适配不同的螢幕尺寸和方向,提供平衡且美觀的布局。

  當平闆橫放的時候,通常是從左到右,詳細程度遞增。

  很多桌面應用和網站都提供了左側導航闆,或者使用一種master/detail的兩面闆布局方式。

  單面闆一般使用Activity實作,多面闆可以用Fragment實作。

  多面闆需要考慮的一個重要問題就是螢幕方向問題,當多面闆解決了平闆上的布局問題時,在橫向可能工作得很好,但是垂直螢幕時又出了問題,是以可能會需要根據不同的螢幕方向寫不同的布局。

  在解決平闆縱向布局問題時,一些常用的政策如下:

  Stretch:拉伸寬度。

Android UX & UI 最佳實踐: 設計有效的導航
Android UX & UI 最佳實踐: 設計有效的導航

  Expand/collapse:展開/折疊:比如将左側導航清單折疊。

Android UX & UI 最佳實踐: 設計有效的導航
Android UX & UI 最佳實踐: 設計有效的導航

  Show/Hide:顯示/隐藏:這種方法将左側完全隐藏。

Android UX & UI 最佳實踐: 設計有效的導航
Android UX & UI 最佳實踐: 設計有效的導航

  

  Stack:重新堆疊你的panel。

Android UX & UI 最佳實踐: 設計有效的導航
Android UX & UI 最佳實踐: 設計有效的導航

  通過提供多面闆的布局,我們可以把螢幕結成組,可以重新規劃一下上一節中的screen map。

Providing Descendant and Lateral Navigation

  導航有兩種,縱向和橫向的,也即繼承的和橫向的(Descendant and Lateral)。

Android UX & UI 最佳實踐: 設計有效的導航

  兄弟螢幕的關系也分兩種:關系相關的(collection-related)和部分相關的(section-related)。

Android UX & UI 最佳實踐: 設計有效的導航

  前者表達同一個集合中的項目之間的關系,部分相關,表達的是同一個parent的不同部分。

Buttons and Simple Targets

  這種section-related的螢幕之間,最直覺的導航方式是在parent裡提供各種按鈕之類的控件來進行觸摸導航。

  選擇了控件後,相應的child screen被打開,完全取代目前螢幕。

  一種常用的基于button的模式就是dashboard(儀表盤)模式。這個模式是一種展現所有部分的很好的方法。

  大的目标會讓UI更易用。Dashboard模式通常用于同等重要性的部分,但是這個模式在更大的螢幕上看起來并不是很漂亮,并且使用者需要額外的這一步才能進入到真正的應用内容中。

Lists, Grids, Carousels, and Stacks

  對于集合關系的元素,比如文字資訊,最直覺的方式是垂直滾動的清單。

  對于照片或者視訊,比較常用的是:豎直滾動的格子(grid),水準滾動的清單(有時叫做carousels(旋轉木馬?)),或者是stacks(有時也叫cards)。

Android UX & UI 最佳實踐: 設計有效的導航

  這種list-based模式的導航通常用于顯示元素較多的集合,但是也會有問題,那種項目較多、較深的清單(drill-down list navigation),通常是沒有效率和繁重的,要得到一個特定的部分有可能需要點選(觸摸)很多次,使用者體驗會不佳,尤其對比較着急的使用者來說。

  使用垂直的清單也比較尴尬,在大的螢幕上,寬度被擴充,高度一定,會有很多沒用的空白。

  一種緩解的方法就是加入文字資訊,說明一下;另一種就是在這個list旁邊加入其它的一個水準的面闆。

Tabs

  對于水準導航來說,使用tab是很常見的。Tab比較适合于小的集合(小于4)的section-based的螢幕。

  Tab應該一直保持一緻,每次選擇Tab之後隻有Content區域會發生變化,并且Tab應當一直都在。

  Tab應該沒有曆史,并且應該在頂端。

Horizontal Paging (Swipe Views)

  另一個比較流行的水準導航模式是水準的page,也叫swipe views。

  這種模式最好用于collection-related的螢幕。和tab一樣,這種模式也可以嵌套其他。

  這種水準滑動page模式适用于内容有相似性,并且頁數比較少的情況。

  可以和Tab結合。對于collection-related的項目來說,如果螢幕之間有順序關系,這種page模式是最直覺的。

  如果子screen有水準平移的表面,比如地圖,是不适用這種模式的。

Providing Ancestral and Temporal Navigation

  導航不隻是往下往child走,還應該向上向祖先走。并且要遵循Android的約定,提供傳回鍵的回退功能。

Support Temporal Navigation: Back

  提供臨時的導航,即曆史回退,是Android系統重要的一個方面。

  所有的Android使用者都會期待back鍵會把他們帶回到上一個螢幕。

  螢幕曆史的最根部是Launcher application,也即桌面,即按Back按鈕足夠多的次數後回傳回到桌面,并且此時再按Back,就什麼事也不會發生了。

Provide Ancestral Navigation: Up and Home

  在Android 3.0之前,最常見的向上導航就是Home傳回。

  這通常是通過裝置上的菜單按鈕,或者螢幕左上角的Home按鈕(經常是作為Action Bar的一部分)實作的。

  通過選擇Home,使用者通常會被帶到螢幕繼承關系的最上層,即應用的首頁。

  提供對應用首頁的直接入口可以給使用者安慰和安全感。不管他們在應用的哪個部分,隻要他們選擇Home,就可以回到熟悉的首頁。

  Android 3.0引入了Up,在Action Bar裡作為Home鍵的替代品。

  選擇Up,使用者将會傳回本繼承層次中的父螢幕。

  這種導航通常是傳回上一個螢幕(像Back鍵一樣),但也不總是這樣。

  程式員必須要确定每個螢幕的Up都會傳回一個單獨的、确定的父畫面。

  在有些情況下,Up也可以用來執行一些動作,比如側邊欄的顯示隐藏控制。

  實作注意:實作Home或者Up的時候,要注意back stack的清理。

  可以在intent中用标記 FLAG_ACTIVITY_CLEAR_TOP and FLAG_ACTIVITY_NEW_TASK來實作。

Putting it All Together: Wireframing the Example App

  http://developer.android.com/training/design-navigation/wireframing.html

參考資料

  Best Practices for User Experience & UI

  http://developer.android.com/training/best-ux.html

  Designing Effective Navigation

  http://developer.android.com/training/design-navigation/index.html

  Multi-pane Layouts

  http://developer.android.com/design/patterns/multi-pane-layouts.html

  Navigation

  http://developer.android.com/design/patterns/navigation.html

作者: 聖騎士Wind

出處: 部落格園: 聖騎士Wind

Github: https://github.com/mengdd

微信公衆号: 聖騎士Wind

Android UX & UI 最佳實踐: 設計有效的導航