彈窗又稱為對話框,是App與用戶進行交互的常見方式之一。彈窗分為模態彈窗和非模態彈窗兩種,兩者的區別在於需不需要用戶對其進行回應。模態彈窗會打斷用戶的正常操作,要求用戶必須對其進行回應,否則不能繼續其它操作行為;非模態彈窗則不會影響用戶的操作,用戶可以不對其進行回應,非模態彈窗通常都有時間限制,出現一段時間后就會自動消失。
無論是模態還是非模態,彈窗都是位於當前頁面的最頂層。模態彈窗常常都還會伴隨半透明遮罩來吸引用戶的視覺焦點,以突出彈窗的信息內容。非模態彈窗一般被設計成用來告訴用戶信息內容,而模態彈窗除了告訴用戶信息內容外還需要用戶對其進行功能操作。

隨着開發技術的發展,彈窗的方式和樣式多種多樣,彈窗也被定制化設計成很多種風格和版本。最常見的基本彈窗有以下四種:
Toast、Dialog、Actionbar 和 Snackbar

Toast 提示框
Toast提示框是一種非模態彈窗,它彈出一個小信息,作為提醒或消息反饋來用,一般用來顯示操作結果,或者應用狀態的改變。例如你發出了一條短信,App彈出一個Toast提示你消息已發出。
最常見的Toast提示框為一句簡短的描述性文字。這種樣式的彈窗可以出現在頁面的任何位置,可設置成在頁面頂部、中部或者在底部出現(但一般都是出現在頁面的中軸線上),具體的顯示位置根據頁面的整體設計進行設置。該種Toast在安卓App上十分常見。
還有一種Toast彈窗由簡單的圖形和簡短的文字組成,顯示位置一般位於頁面正中央。這種Toast在iOS和安卓上都可以經常見到。

iOS中建議,設計一種引人注目但又和App 的界面協調融合的方式去展示信息。這種展示信息的方式和安卓純文本的Toast相似,只是界面交互有所不同,它一般在內容頁頂部向下推動出現,然后向上推動消失。這種展示信息的方式現在也在安卓平台上使用。例如騰訊新聞App的iOS版和安卓版均采用了這種形式的Toast彈窗進行刷新功能的操作提醒。

考慮到Toast提示框顯示的時間較短(一般只有幾秒種)、占用區域不大,它很容易被用戶忽略,所以Toast不適合承載過多的文字和重要信息。
Dialog 對話框
Dialog對話框是一種模態彈窗。當用戶進行了敏感操作,或者當App內部發生了較為嚴重的狀態改變,這種操作和改變會帶來影響性比較大的行為結果,在該結果發生前應以Dialog的彈窗形式告知用戶且讓用戶進行功能選擇。比如退出App、進行付費下載等功能操作。
一般情況下Dialog由標題、信息內容和功能按鈕組成,只有當用戶點擊了某個功能按鈕后彈窗才會消失,App隨即執行該功能操作,進入相應的功能流程。

Dialog的標題和信息內容的文字描述都要設計成盡可能的簡潔和無異義,也可以選擇省略標題只保留內容描述和功能按鈕(實際上大多數Dialog都被設計成沒有標題的樣式)。使用Dialog,功能按鈕最好只有兩個,讓用戶選擇“是”或“非”的功能操作(“是”指對內容描述的確認操作,比如確認刪除、確認付費;“非”一般指取消操作,然后關閉彈窗);也常被設計成只有一個“確認”按鈕,目的是讓用戶閱讀內容后點擊關閉彈窗(這種樣式的Dialog,信息內容必須非常有必要以至於需要打斷用戶的操作進行信息內容閱讀確認,否則請用Toast進行非模態彈窗提示)。

若Dialog對話框出現三個或以上的功能按鈕,將會增加用戶的功能選擇負擔,所以需要使用多個功能按鈕選擇的時候請考慮使用Actionbar。
Actionbar 功能框
Actionbar功能框可以看成是Dialog的一種延伸設計,兩者都是模態彈窗,用戶必須進行回應,否則彈窗不會消失,用戶無法繼續其它操作。Actoinbar比Dialog擁有更多的功能按鈕,提供給用戶更多的功能選擇,Acionbar一般都設計有一個默認的“取消”功能按鈕,點擊該按鈕后關閉彈窗,用戶點擊彈窗以外的區域時相當於進行了點擊“取消”功能按鈕的默認回應。Actionbar一般被設計用來向用戶展示多個功能按鈕選擇。
在iOS中,Actionbar的樣式比較常見的是文字列表框,它出現在頁面底部,以簡潔的功能描述性文字展示功能按鈕,敏感的功能操作一般用紅色字體標出(也可以設計其它顏色以突出某個功能按鈕)。

當功能按鈕數量很多的時候,文字列表的形式不適合顯示,此時可以用圖形加文字描述排列的形式來進行展示。這種樣式下需要注意彈窗內各功能按鈕的UI設計和排列布局。

安卓系統中也有文字列表和圖文排列兩種樣式的Actionbar。

在安卓系統中,Actionbar還經常被設計成“選擇列表框”(其實就是用選項代替了功能按鈕),比如安卓版的微信App中就是用這種設計方式讓用戶進行性別選擇。這種設計方式的好處是減少了功能流程中的頁面跳轉,但是如果選項很多而且描述文字較多的時候,還是設計成選項詳情頁面會更好些。

Snackbar 提示對話框
Snackbar提示對話框是安卓系統的特色彈窗之一(安卓平台在開發的時候可以直接調用Snackbar類生成該彈窗,iOS好像也可以進行定制化設計開發),它也是一種非模態彈窗,同時擁有Toast和Dialog的特點,不會打斷用戶正常的操作流程,它除了可以告訴用戶信息內容,還可以與用戶進行對話交互(用戶可以點擊功能按鈕進行回應)。

一般情況下,Snackbar由信息內容加一個功能按鈕組成,用戶點擊了功能按鈕后彈窗消失,App隨即執行該操作,進入相應的功能流程。Snackbar跟Toast一樣是有時間限制的,即使用戶不進行回應,彈窗出現一段時間后也會自動消失。
與Taost相似,Snackbar彈出一個小信息,作為提醒或消息反饋來用,一般用來顯示操作結果,另外可以提供一個功能按鈕給用戶選擇使用。例如你刪除了某張圖片,App彈窗告訴你刪除成功,並提供一個“撤銷刪除”功能按鈕給你進行對應的功能操作。

Snackbar還可以被設計成只有信息內容而沒有功能按鈕,這種樣式的Snackbar用戶無法進行操作,只能等它自動消失,此時它就相當於一種文字描述型的Toast,只是表現形式有所不同。

這種樣式的Snackbar和Toast對比如下:

個人比較喜歡安卓系統采用Snackbar與用戶進行非模式彈窗交互,因為這種彈窗本身擁有比較友好的UI交互,顯示內容和提醒度也比Toast好,還能提供一個功能按鈕給用戶選擇使用。但是考慮到界面的整體設計,只有在界面內的元素大多為靜態和底部的空白區域較大,而且需要提示給用戶的內容比較多(無法用一個簡短的句子描述)的時候,這種彈窗才會給用戶更好的交互體驗。否則本來界面就一大堆動態元素或者底部原本就充滿信息內容,此時再從底部向上滑出一個彈窗,會顯得整個界面非常擁擠和凌亂,而一般情況下移動端的App產品更多的是傾向於簡約設計。
使用彈窗要克制
並不是所有的彈窗設計都會被用戶接受,特別是廣告類彈窗常常會被用戶所厭惡。我們在使用彈窗的時候要盡量克制,要考慮信息內容的必要性和目的性(商業推廣或者增值服務等目的),來選擇是否使用彈窗和使用哪種方式和樣式的彈窗。一旦選擇使用彈窗,請盡量少用,一般情況下都把彈窗的層級控制在只有一級(即關閉了一個彈窗后不會馬上出現新的彈窗),接連不斷的出現彈窗只會增加用戶想要卸載App的欲望(愚人節整蠱設計除外^_^)。
User story -- 小明刪文件
用一個用戶故事來模擬場景,練習一下彈窗交互的產品設計:
一、場景描述:
step1:小明打開xx雲盤App進入首頁,App檢測到手機並沒有連接WiFi,於是彈窗“當前網絡使用移動數據連接”,小明知道后切換到WiFi連接。
step2:小明看完一部電影后想刪除它,App彈窗“確認刪除選中的文件嗎?”小明想既然看完了就沒必要存在雲盤了,於是他點擊了彈窗的【刪除】按鈕。
step3:App刪除了該電影文件,並提示“文件刪除成功!”還提供了一個【撤銷】的功能按鈕。小明覺得這部電影刪了好可惜,於是他點擊了【撤銷】,App此時進行文件恢復操作,完成后提示“文件恢復成功”。小明看到電影文件又出現在網盤里,露出了滿意的笑容。
二、流程設計


三、產品原型:
根據這個user story設計成簡易的產品原型,下面為原型演示連接:
作者:男良熊
鏈接:https://www.jianshu.com/p/d6c9a485c061
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。