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:以上两者之外的任何其他场景。

浙公网安备 33010602011771号