Dialog、Toast、Snackbar小结(来自郭霖博客)

Dialog:

  Dialog的作用是给用户一个提示信息,并让用户根据提示做出判断。而Dialog的特征就是,它会阻止你原本正在进行的操作,必须停止下来对Dialog进行处理。

Toast:

  如果需要不会阻挡用户原本正在进行的操作,则需要Toast。这里写一个小技巧:假设场景是点击button触发Toast,如果连续快速点击5次,那Toast也会触发5次。这样的体验是不好的。

  因此,最佳的做法是将Toast的调用封装成一个借口,写再一个公共的类当中。如下:

 1 public class Util{
 2     private static Toast toast;
 3     public static void showToast(Context context, String content){
 4         if (toast == null){
 5             toast = Toast.makeText(context,content,Toast.LENGTH_SHORT);
 6         }else{
 7             toast.setText(content);
 8         }
 9         toast.show();
10     }
11 }

这样的话,点击5次,只会显示一次的时长。

Snackbar:

  如果说Dialog和Toast是两个极端的话,那么Snackbar就是出于中间的位置。Snackbar和Toast比较相似,但是用途更加广泛,并且它是可以和用户进行交互的。Snackbar使用一个动画效果从屏幕的底部弹出来,过一段时间也会自动消失。

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

dependencies{

  compile 'com.android.support:design:23.4.0'

}

用法和Toast是比较相似的:

 1 Snackbar.make(view,"data deleted",Snackbar.LENGTH_LONG).setAction("Undo",
 2 
 3   new View.onClicListener(){
 4 
 5     @Override
 6     public void onClick(View v){
 7 
 8   
 9 
10 }
11 }).show();

这里调用Snackbar的make()方法来创建一个Snackbar对象,make()方法的第一个参数需要传入一个view,只要是当前界面布局的任意一个view都可以,Snackbar会使用这个view来自动查找最外层的布局,用于展示Snackbar。第二个参数就是Snackbar中显示的内容,第三个参数是Snackbar显示的时长。这些和Toast都是类似的。

接着又调用setAction()方法来设置一个动作,从而让Snackbar不仅仅是一个提示,而是可以和用户进行交互的。最后调用show()方法让Snackbar显示出来。

 

总结:

  对三种方式的使用时机做一个总计。

Dialog:当提示信息是至关重要的,并且必须要由用户做出决定才能继续的时候,使用Dialog。

Toast:当提示信息只是告知用户某个事情发生了,用户不需要对这个事情做出响应的时候,使用Toast。

Snackbar:以上两者之外的任何其他场景。

posted @ 2016-12-08 15:11  jdhdevelop  阅读(286)  评论(0)    收藏  举报