返回、向上和關閉
熟悉移動設計的人大概知道 Android 系統有兩種導航方式 Back 和 Up。
- 返回(Back)位於屏幕底部那排導航條上,在有些手機上是虛擬鍵有些是實體鍵。點 Back 會回溯你之前按時間順序看過的一個個頁面,不管它們是不是屬於同一個 App。如果你一直狂按 Back 鍵,最終會回到系統主屏幕。
- 向上(Up)位於 App 頂部工具條上,圖標形如 「←」。它根據頁面之間的層級關係在 App 內導航,一個 App 里的 Up 永遠不會把你帶到別的 App 或桌面去。它的路徑終點是一個不可再 Up 的頂級頁面,比如 App 首頁。
簡單來說,Back 是系統導航,Up 是應用內導航。Back 作用的是相關頁面歷史(history),Up 作用的是一個應用里的層級(hierarchy)。
雖然在一個 App 里導航時,Back 和 Up 在大多數時候行為是差不多的:
但有一種情況例外:當前一個瀏覽的頁面在結構上並不是當前頁的父級頁面時,點 Back 是返回到前一個瀏覽的頁面,而點 Up 是來到當前頁結構上的父級頁面。啊,感覺有點繞……
Android 為什麼要創造出 Back 和 Up 兩種導航方式?引入 Up 是為了解決什麼問題?
查了一番資料,找到一個 2011 年的 Google I/O Session,沒想到剛好有一段是解釋為什麼 Android 3.0 要增加 Up 導航:
意思是說,Android 一直以來是依據人們擅長時間化記憶(temporal memory)來進行導航的。由於人們更容易記得剛剛發生的事情,所以 Back 幫助用戶在當前上下文快速切換回上一個上下文。但這種導航有時候會讓用戶感到困惑,因為人們不太擅長回憶事情發生的先後順序。當頁面瀏覽歷史特別長的時候,如果要用戶不停點擊 Back 遍歷所有看過的頁面才能回到原點,用戶就會感覺迷失在無止盡的界面中。
不過記不清時間順序沒關係,人們不是擅長結構化記憶(structural memory)嘛,頁面之間的邏輯關係理解起來可比回憶瀏覽路徑簡單多了,因此 Android 提供了應用內 Up 用於返回上級頁面。用戶在 Web 時代培養了「回到首頁」的習慣,而 Up 也能讓用戶一級一級返回到應用首頁為止,提供清晰的預期。
看一個應用商店 App 的例子就能理解了:
還有一個 Up 試圖解決的跨應用導航問題:
在應用商店點「發送電子郵件」跳轉到 Gmail 寫郵件頁,此時點擊 Back 即放棄寫郵件返回應用商店,Up 則會回到寫郵件頁的上級頁面,即 Gmail 收件箱郵件列表頁。這一場景中,用戶通過點 Up 來表明其希望留在 Gmail 中。與 Up ( ← ) 經常混淆的另一種導航圖標是 Close ( × )。Close 一般適合用在沒有複雜子頁面的頁面上,它傳達出一種臨時的感覺,有「取消、撤銷」的意味。Close 的點擊行為和系統的 Back 是一模一樣的。那麼,在一個頁面上,到底左上角是放 「←」 還是「×」?需要結合具體情景來看。
拿微信舉個例子,當你從知乎 App 分享一篇文章給微信好友時,「選擇發送對象」這一步頁面左上角導航圖標的使用的是 Up,但點擊後卻是回到知乎 App(跳出微信),這是不合理的,因為 Up(←)導航範圍僅限於 App 內,不應該把用戶帶離當前的 App。
一種更合理的做法是:把 Up icon 改為 Close icon,點擊 Close 關閉微信回到之前的 App。
Back、Up 和 Close 的區別就是這樣咯。雖然是個超小的細節,設計時也要多多注意呀。
推薦閱讀:
※Android NDK 入門與實踐
※Android 開發最佳實踐
※酷派「出軌」事件,高管蔣超的言論看起來有很多問題!哪位大神能幫忙解讀一下?
※學會不做虧本生意的 Google,即將完成自己的最後一塊拼圖