学习笔记之Dialog,Toast,SnackBar

原创 2016年08月29日 15:05:38

学习笔记之Dialog,Toast,SnackBar

Dialog

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

这段代码就可以弹出一个非常精美的dialog了

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

但是大多数的人并不喜欢这样被打断,也许用户正在处理一项重要的操作,突然弹出一个dialog遮挡住了他原本的操作,用户就会非常恼火.因此使用dialog必须谨慎一点

Toast

要想不会阻挡用户当前的操作,Toast就是一个,Toast只会弹出一段信息,告诉用户某某事情已经发生了,过一段时间就会自动消失,他完全不会阻挡用户的任何操作,甚至用户也完全不用理会Toast

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

最后一个参数用于指定Toast显示的时长,Toast.LENGTH_SHORT表示显示时间较短,Toast.LENGTH_LONG表示显示时间较长,但是Toast也有体验不好的时候.,比如你连续点击多次.Toast就触发了多次,导致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();
    }

}

虽说Toast在用户体验方面比Dialog要好,但是也要慎用,特别是涉及一些敏感操作的时候,比如删除数据,只给用户一个提示”该数据已被删除”,而不给用户选择是否要删除的机会,这个时候用户肯定就要暴走了.

Snackbar

如果说dialog和toast是两个极端的话,那么Snackbar就是出于中间的位置了,Snackbar和Toast有些相似,但是用途更加广泛,并且它是可以和用户进行交互的,Snackbar使用动画从屏幕的地步弹出来,过一段时间之后也会自动消失,

在使用Snackbar之前,首先要添加相应的依赖:

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显示出来.

Snackbar的效果有点类似于toast,不过他是从屏幕底部弹出来的,Snackbar上面也可以加入和用户交互的按钮,比如删除数据的时候可以给用户一个Undo的选项,

版权声明:本文为博主原创文章,未经博主允许不得转载。

Dialog、Toast、Snackbar的区别和使用

今天给大家带来一篇简单易懂的微技巧文章,并没有什么高深的技术点,但重点仍然是在细节,相信还是可以给不少朋友带来帮助的。 Dialog和Toast所有人肯定都不会陌生的,这个我们平时用的实在是太多...
  • qq_33275597
  • qq_33275597
  • 2016年08月11日 09:23
  • 2614

Android中Dialog、Toast和Snackbar使用场景以及技巧

前言: Dialog和Toast用的太频繁了,但是Snackbar是Design Support库中提供的新控件,可能对于一些比较早写Android的大神来说,用的相对较少,因为可能老Android...
  • caihongdao123
  • caihongdao123
  • 2016年08月03日 11:02
  • 5657

巧用Snackbar代替Toast

SnackBar是 Android Support Library 22.2.0 里面新增提供的一个控件,可以把它理解成一个加强版的Toast,或者是一个轻量级的Dialog。SnackBar默认从屏...
  • JavaAndroid730
  • JavaAndroid730
  • 2016年12月11日 21:39
  • 369

Snackbar和Toast的花式使用,这一篇就够了

转自:---http://www.jianshu.com/p/e023bfb6466b Foreword 这一篇是建立在我赌5毛你没见过这样的SpannableSt...
  • guliang28
  • guliang28
  • 2017年06月16日 16:27
  • 266

Android提醒微技巧,你真的了解Dialog、Toast和Snackbar吗?

Dialog和Toast所有人肯定都不会陌生的,这个我们平时用的实在是太多了。而Snackbar是Design Support库中提供的新控件,有些朋友可能已经用过了,有些朋友可能还没去了解。但是你真...
  • sinyu890807
  • sinyu890807
  • 2016年07月26日 07:55
  • 43118

Android中snackBar的使用【替换Toast】

Snackbar.make(content, "再按一次退出程序", Snackbar.LENGTH_LONG) .setAction("确定", new View.OnClickLi...
  • u010838785
  • u010838785
  • 2017年06月14日 14:01
  • 495

Material Design学习之 Snackbars(详细分析,Toast的加强版)

Material Design Snackers实现分析,源码已上Git 实现简单易理解,很好的源码。 每一段实现都已解释,很好理解,欢迎提意见。...
  • ddwhan0123
  • ddwhan0123
  • 2016年01月22日 11:20
  • 6000

Android开发之————Toast、Dialog、SnackBar

Dialog和Toast所有人肯定都不会陌生的,这个我们平时用的实在是太多了。而Snackbar是Design Support库中提供的新控件,有些朋友可能已经用过了,有些朋友可能还没去了解。但是你真...
  • Angel_jn
  • Angel_jn
  • 2017年02月07日 13:49
  • 239

Android:Dialog、Toast、Snackbar

Dialog AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Title") ...
  • chai_mm
  • chai_mm
  • 2017年10月16日 11:14
  • 44

android——Snackbar+CoordinatorLayout替代Toast

步骤一:添加相应的依赖库 com.android.suppory:design:22.2.0 步骤二:实现布局
  • u012764110
  • u012764110
  • 2015年10月10日 11:46
  • 1328
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习笔记之Dialog,Toast,SnackBar
举报原因:
原因补充:

(最多只允许输入30个字)