移動端設計中有三個名字經常被提到:Dialog、Toast 和 Snackbar,大部分同學從 Google 設計規范中第一次瞭解它們。
原本無論作為系統規范還是應用組件它們都已足夠成熟,我也自以為對它們有足夠的瞭解。但最近工作、交流中發現對這三者尤其 Snackbar 的瞭解非常淺,所以花瞭一點時間重新學習瞭一下。
//我並非專業工程師,更多僅從設計師角度來闡述自己的心得。
作為應用中承擔“操作反饋”和“信息傳遞”的組件,Dialog、Toast 和 Snackbar 三者很相似但又各有不同。尤其從 Snackbar 被提出之後,網絡上有很多文章討論它們三者的應用場景和使用方法。
Toast 翻譯過來叫“吐司”,非常形象的一小片;Snackbar 則是“快餐店”,聽起來就比吐司要牛逼一點......
眾所周知,iOS 規范中是沒有 Toast/Snackbar 這兩個名字的,但由於設計“跟隨操作且超輕量”的反饋交互比較困難,所以直接將文字、icon 在操作後甩到用戶臉上成為瞭一種簡單、有效的做法。
理想的反饋是發生在操作空間自身,如 Twitter 的 Favorite 按鈕,觸發與否都用動畫來表達。第一做到瞭操作與反饋一體,第二避免瞭 按鈕被反復點擊觸發多個 Toasts 所引起的壞體驗。
最初我想當然的以為,那些出現在屏幕正中間、黑色半透明底色,顯示文字或圖案的東西叫做 Toast;而那些自帶操作項,可以滑動或點擊刪除消息的東西則是 Snackbar。但實際上,通過位置、顏色、是否帶操作和如何消失都無法準確定義它們。
首先,來復習一下 Material Design 的官方說明。(值得註意的是,現在 Snackbar 和 Toast 在同一個文檔中,但誰能告訴我為什麼這兩個單詞要用復數?)
簡單翻譯一下:
1、Snackbar 包含一條簡單的、與操作行為相關的文字消息,它也可以包含一個文字操作項目,但不能包含 icon。
2、同一時間隻能出現一個 Snackbar,每個 Snackbar 可以包含。
3、Snackbar 從屏幕底部向上移動出現。
簡單翻譯一下:
Toast(Android only?顯然已經不是瞭...)主要用於傳遞系統消息,展示於屏幕底部並且不能滑動消除。
可以看到,官方設計規范對 Toast 的描述已經很少瞭,似乎更傾向於讓大傢使用 Snackbar,而且它們的定義也非常含糊,顯然大多數 App 都不是這麼設計的......
從代碼層面我們可以看到關於它們更多的特性 [1]。
Toast.makeText(context, "things happened", Toast.LENGTH_SHORT).show();
Snackbar.make(view, "data deleted",Snackbar.LENGTH_LONG)
.setAction("Undo", new View.OnClickListener(){ @Override
public void onClick(View v) {
}
})
.show();
这次文章的内容主要是对比一下几支不同年代146,看看他们之间有什么不同,年代从远到近分别是14C、14k、T舌、现产(P146), ...
工欲善其事,必先利其器。 周末趁著闲暇,给大家整理了一份股票、基投资找工具网站。 看行情、找资讯、逛论坛,看财报、看研 ...