?Android Design 經(jīng)過(guò)近兩年的發(fā)展, 確實(shí)是在不斷的日趨完善, 但是不可否認(rèn)的是, 這套規(guī)范遠(yuǎn)未至臻完美。
研究?Android Design?這么久, 我一直都在講述 Android Design 的優(yōu)勢(shì)與便利, 卻有意無(wú)意的忽視著 Android Design 中的各種不足之處. 這次, 藉由知乎上的一個(gè)問(wèn)題, 我打算整理一下目前為止我覺(jué)得比較嚴(yán)重的, Android Design 的幾個(gè)缺陷. 希望大家在看到這篇文章之后, 能夠下意識(shí)的避免這些問(wèn)題, 或者從這些問(wèn)題入手, 發(fā)現(xiàn)改進(jìn) Android Design 的方法.
1. 可見(jiàn)性
圖片來(lái)自?@評(píng)論尸.
也許你也遇到過(guò)這樣的狀況吧: 看到一個(gè)新應(yīng)用, 把玩了許久但是卻完全沒(méi)有意識(shí)到 Drawer 的存在. 這就是目前 Android Design 很大的一個(gè)缺點(diǎn): 可見(jiàn)性不足. 就拿 Drawer 做例子, 雖然 Google 強(qiáng)調(diào)過(guò)開(kāi)發(fā)者應(yīng)該通過(guò)各種方式來(lái)讓用戶發(fā)現(xiàn) Drawer 的存在, 但是這個(gè)控件本身的可見(jiàn)性很差 (所以才會(huì)需要開(kāi)發(fā)者花額外的功夫讓用戶意識(shí)到它的存在), 這點(diǎn)是不可否認(rèn)的. 如果和 iOS 的對(duì)比, 那就更加明顯了: iOS?中的 Drawer 一般會(huì)通過(guò)一個(gè)專(zhuān)門(mén)的按鈕喚出:
這樣就基本不存在可見(jiàn)性的問(wèn)題了. 畢竟比起 Android Design 標(biāo)準(zhǔn)的 Drawer 按鈕 (應(yīng)用圖標(biāo)和 hamburger), 這個(gè)按鈕的存在感要高太多. 要避免這個(gè)問(wèn)題, 有個(gè)很方便的辦法就是采用非官方 Drawer, 使整個(gè)界面都可以被拖動(dòng), 能大大增加 Drawer 的可見(jiàn)性. , 在初次進(jìn)入應(yīng)用時(shí)展開(kāi) Drawer 也是很好的提示方案. 有的應(yīng)用甚至直接將 Drawer 作為真正的主界面 (在主界面按下 back 會(huì)開(kāi)啟 Drawer, 在 Drawer 按 back 才是退出應(yīng)用,?不過(guò)并不推薦這種方式), 很好的解決了這個(gè)問(wèn)題. 另外, 除了 Drawer 之外, 還有一個(gè)已經(jīng)快要死掉的控件 Scrollable Tabs 也是可見(jiàn)性非常差勁的類(lèi)型 (只能看到當(dāng)前和左右各一個(gè) Tab 的名稱(chēng)). 看不到所有 Tabs 的壞處很明顯, 我這里有個(gè)不那么恰當(dāng)?shù)睦? 我父親的一個(gè)朋友用了兩年的 Kin 居然不知道左右滑動(dòng)可以調(diào)出更多/其他的功能 —— 好在這個(gè)控件已經(jīng)基本沒(méi)什么應(yīng)用在用了.
2. 按鈕樣式
亂七八糟的按鈕樣式容易讓用戶感到迷惑, 有時(shí)甚至?xí)層脩舨荒艽_定”這到底是不是個(gè)按鈕?” 而且有的開(kāi)發(fā)者又會(huì)自己”創(chuàng)造”新的按鈕樣式, 更是讓人迷惑. 其實(shí)現(xiàn)在還在用的按鈕樣式基本上也就只剩下兩種了 —— borderless (無(wú)邊框) 和 plain (平面式). 活用這兩種按鈕樣式, 在正確的地方使用正確的按鈕, 可以讓用戶的困惑減少很多.
3. 使用圖標(biāo)按鈕
這點(diǎn)要對(duì)比 iOS 來(lái)看. Android Design 中明確說(shuō)過(guò)盡量使用簡(jiǎn)潔清晰的圖標(biāo)來(lái)制作圖標(biāo)按鈕, 但是圖標(biāo)這種東西往往具有一定的不確定性, 比如下圖這些圖標(biāo):
一個(gè)圖標(biāo)根據(jù)使用情況不同可以代表不同的信息, 很經(jīng)常發(fā)生的情況是同一個(gè)圖標(biāo)在不同的應(yīng)用里起到了不同的作用.
來(lái)看看?iOS. ?iOS?選擇直接大量使用文字按鈕 (或者圖片在上文字在下的按鈕). 相比之下, Android 的純粹圖標(biāo)按鈕就顯得很不直觀, 更別提某些開(kāi)發(fā)者自己畫(huà)了一套讓使用者完全不明所以的圖標(biāo), 那簡(jiǎn)直是對(duì)用戶體驗(yàn)的毀滅.
還有更糟糕的. 如果開(kāi)發(fā)者使用了自制的 Action Bar, 那么唯一的救命稻草 —— 長(zhǎng)按圖標(biāo)浮現(xiàn)提示 (本來(lái)這個(gè)提示就已經(jīng)夠隱蔽的了, 說(shuō)實(shí)話有多少 Android 用戶知道長(zhǎng)按圖標(biāo)可以出現(xiàn)文字提示的?) —— 也就消失了. 舉個(gè)例子, 在 Android 4.1 以上的自帶時(shí)鐘應(yīng)用中, “添加不同時(shí)區(qū)時(shí)鐘”和”進(jìn)入鬧鐘界面”這兩個(gè)按鈕是沒(méi)有任何文字提示的, 尤其是那個(gè)添加不同時(shí)區(qū)時(shí)鐘的按鈕, 第一次使用的用戶基本不可能直接猜出那是什么用的按鈕, 長(zhǎng)按又無(wú)法獲得提示, 實(shí)在是憋屈.
?
上面是很久以前我還在給四次元畫(huà) Demo 圖的時(shí)候想到的一種解決方案. 在 Android 上, 開(kāi)發(fā)者是可以通過(guò)比較簡(jiǎn)單的編譯就實(shí)現(xiàn)在按鈕旁顯示文字的效果的. 比起讓用戶猜測(cè)圖標(biāo)按鈕的含義, 在空間充裕時(shí), 于一些關(guān)鍵按鈕/非通用性按鈕旁顯示文字, 這便能很好的解決這個(gè)問(wèn)題了. 除了強(qiáng)制顯示文字, 還有很重要的一點(diǎn)就是盡量使用標(biāo)準(zhǔn)圖標(biāo)和標(biāo)準(zhǔn)含義, 不要隨便創(chuàng)造含義不能一目了然的圖標(biāo), 或?qū)σ延袌D標(biāo)添加新的含義. 自制圖標(biāo)的時(shí)候, 注意一些通用的規(guī)范, 比如在圖標(biāo)的右下角加上”+”表示新建 (“新建”前綴), 等. 當(dāng)然, 這個(gè)問(wèn)題還有很多更好的解決方案, 歡迎討論.
4. Contextual Action 的問(wèn)題
Android Design 里對(duì)于 Contextual 的定義倒是很明確, “長(zhǎng)按時(shí)出現(xiàn)的操作”. 但是對(duì) Contextual 操作的觸發(fā)方式卻沒(méi)有靠譜的規(guī)范. Google 自家就有好幾種對(duì) Contextual Action 的解決方案:
上圖左至右分別是單項(xiàng)目的 Action Overflow, 上下文 Action Bar 和次級(jí)操作按鈕. 按照 Google 的說(shuō)法, 采用這三種方式調(diào)出動(dòng)作菜單都是合理的. Item Action Overflow (單項(xiàng)目動(dòng)作菜單) 和 Secondary Action (次級(jí)動(dòng)作) 可以避免長(zhǎng)按造成的可見(jiàn)性不足, Contextual Action Bar 可以在固定的位置提供固定的操作. 它們各有好處, 也各自有適合的地方.?但問(wèn)題是, 有的時(shí)候他們又會(huì)同時(shí)出現(xiàn) (比如 Play Store 里 All apps 列表), 這便讓人感到無(wú)法理喻了. 另外, 我向來(lái)認(rèn)為, 無(wú)論什么操作都應(yīng)該能通過(guò)數(shù)次單擊來(lái)完成, 而官方規(guī)范里的 Contextual Action Bar 的喚出方式卻只有長(zhǎng)按 (在 Gmail 里也可以單擊頭像喚出, 這是個(gè)不錯(cuò)的進(jìn)步), 可見(jiàn)性非常低. 就這一點(diǎn)而言, 我比較喜歡 Item Action Overflow 和 Secondary Action.
5. Action Overflow
下圖可以說(shuō)明所有問(wèn)題:
Play Music 的專(zhuān)輯頁(yè)面中, 你可以看到三種不同的?Acrtion?Overflow. 我覺(jué)得, 應(yīng)該沒(méi)有任何一個(gè)新用戶能在第一次使用 Play Music 的時(shí)候就搞清楚屏幕上三個(gè) Action Overflow 的區(qū)別吧. 更何況它們又長(zhǎng)得幾乎一模一樣, 實(shí)在是令人無(wú)語(yǔ).
由于 Android 將所有的菜單溢出項(xiàng)都放在了 Action Overflow 中, 造成了很多地方都會(huì)出現(xiàn) Action Overflow. 這個(gè)問(wèn)題, 我現(xiàn)在也暫時(shí)沒(méi)能想到什么很好的解決方案 (其實(shí)遇到這問(wèn)題一共也就這么幾個(gè)地方, 而且有趣的是, 這還都是 Google 自家應(yīng)用…), 希望大家能共同討論一下.
說(shuō)了這么多的問(wèn)題, 我想表達(dá)的中心思想不過(guò)是, Android Design 經(jīng)過(guò)近兩年的發(fā)展, 確實(shí)是在不斷的日趨完善, 但是不可否認(rèn)的是, 這套規(guī)范遠(yuǎn)未至臻完美. 希望開(kāi)發(fā)者和設(shè)計(jì)師們?cè)谠O(shè)計(jì)自己的應(yīng)用的時(shí)候, 不要盲目的遵循規(guī)范, 或著奉 Google 自己的應(yīng)用為圭皋, 請(qǐng)?jiān)谠O(shè)計(jì)應(yīng)用的時(shí)候, 更多的加入自己的思考.
另外, 如果你發(fā)現(xiàn)了 Android Design 的其他問(wèn)題, 請(qǐng)盡管向 Google 方面反饋. 當(dāng)然, 也歡迎在評(píng)論中探討.
來(lái)源:極客公園