見出し画像

Dialog・Snackbar・Toast の使い分け

Android アプリでユーザにアラートを出す際、ほとんどが Dialog を使用し Toast や Snackbar をうまく使い分けていないアプリがよく見受けられるので、ガイドラインをもとにこう使い分けるべきだというのを書いていこうと思います。

はじめに

Material Design のガイドラインには Confirming actionsAcknowledging actions の 2 つのアクションのタイプがあるとあります。
前者は確認のためのアクション (本当に削除しますか的なの) で後者はユーザーが選択したアクションが完了したかを知らせるアクション (削除しました的なの) です。

Confirming actions は Dialog、Acknowledging actions は Snackbar・Dialog・Alert などが分類され、Dialog は確認と完了の両方の目的で使います。

Dialog と Snackbar を使い分ける場合というのは、Acknowledging actions の時になります。

Dialog と Snackbar の使い分け

Acknowledging actions における Snackbar・Dialog・Alert などの使い分けはユーザの行動の妨害、選択できるアクションの数で使い分けます。

Dialog はユーザの行動を妨害し、アクションも 2 つまでは持つことができます。ユーザが操作しない限りダイアログは消えません。

Snackbar はユーザの行動を妨害せずに使うことができ、アクションも 1 つまで。Cancel や Close ボタンは配置せずにしばらくすれば自動で消えます。

Dialog と Snackbar の使い分けを簡単にまとめると、
Dialog はユーザの行動を妨害してでも通知もしくは何かを選択させたい場合
Snackbar はユーザの行動を妨害せずに一時的に何かしらの通知をしたい場合
となります。

Toast の使い道

Toast の扱いについては Snackbar のドキュメントに書いてありました。

Android also provides a Toast class with a similar API that can be used for displaying system-level notifications. Generally, snackbars are the preferred mechanism for displaying feedback messages to users, as they can be displayed in the context of the UI where the action occurred. Reserve Toast for cases where this cannot be done.

Toast の使う場面は Snackbar とほとんど同じようですが、違いとしてアクションが発生する画面に Snackbar が表示できない場合には Toast を使いましょうとあります。

例えば、メールの送信が完了したアラートを出す場合、送信している最中に他のアプリを開いたりしてずっとメールのアプリを開いているとは限りません。その場合には Snackbar ではなく Toast にしましょうということです。(ちなみに実装上このパターンで Snackbar は無茶をしない限り出せないです。)


そもそも Android はユーザの行動を極力妨害させないようにすべきという考えがあり、ProgressDialog もその理由でかなり前に非推奨となっています。
Dialog はユーザの行動を妨害してしまうため、必要以上に使用するのは避けるべきです。そのため Snackbar など他のアラートも用法用量守って正しく使っていきましょう。

この記事が気に入ったらサポートをしてみませんか?