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可能会是你最好的选择。

你可能感兴趣的:(Dialog、Toast和Snackbar)