Dialog、Toast和Snackbar

  1. Dialog
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Title")
       .setMessage("Dialog content.")
       .setPositiveButton("OK", new DialogInterface.OnClickListener() {
               @Override
               public void onClick(DialogInterface dialog, int which) {
               }
       })
       .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
               @Override
               public void onClick(DialogInterface dialog,int which) {
               }
        })
       .show();
  1. Toast

Toast的基本用法吧,如下所示:

Toast.makeText(context, "things happened", Toast.LENGTH_SHORT).show();

快速連續點擊了五次按鈕,Toast就觸發了五次。這樣的體驗其實是不好的,最佳的做法是將Toast的調用封裝成一個接口,寫在一個公共的類當中,如下所示

public class Util {

    private static Toast toast;

    public static void showToast(Context context, 
        String content) {
        if (toast == null) {
            toast = Toast.makeText(context,content, Toast.LENGTH_SHORT);
        } else {
            toast.setText(content);
        }
        toast.show();
    }

}

調用的時候也很簡單,只需要把Context對象和Toast要顯示的內容傳進來就可以了:
Util.showToast(context, "things happened");

  1. Snackbar

在使用Snackbar之前,首先需要在app/build.gradle中添加相應的依賴:

dependencies {
compile 'com.android.support:design:23.4.0'
}
然后就可以使用Snackbar了,它的用法和Toast是比較相似的:

Snackbar.make(view, "data deleted",Snackbar.LENGTH_LONG)
        .setAction("Undo", new View.OnClickListener(){
                @Override
                public void onClick(View v) {
                }
            })
        .show();

這里調用Snackbar的make()方法來創建一個Snackbar對象,make()方法的第一個參數需要傳入一個view,只要是當前界面布局的任意一個view都可以,Snackbar會使用這個view來自動查找最外層的布局,用于展示Snackbar。第二個參數就是Snackbar中顯示的內容,第三個參數是Snackbar顯示的時長。這些和Toast都是類似的。

接著這里又調用了一個setAction()方法來設置一個動作,從而讓Snackbar不僅僅是一個提示,而是可以和用戶進行交互的。最后調用show()方法讓Snackbar顯示出來。

現在你有三種方式可以給用戶提示信息,Dialog、Toast和Snackbar,下面我們對這三種方式的使用時機做個總結吧。

?Dialog:當提示信息是至關重要的,并且必須要由用戶做出決定才能繼續的時候,使用Dialog。
?Toast:當提示信息只是告知用戶某個事情發生了,用戶不需要對這個事情做出響應的時候,使用Toast。
?Snackbar:以上兩者之外的任何其他場景,Snackbar可能會是你最好的選擇。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容