Android提醒Dialog、Toast和Snackbar ---站在巨人的肩膀上学习总结

来源:互联网 发布:java 键值对集合 编辑:程序博客网 时间:2024/04/29 13:35

详情请开偶像博客:http://blog.csdn.net/guolin_blog/article/details/51336415

一:Dialog 的使用场景

Dialog的作用是给用户一个提示信息,并让用户根据提示做出判断。而Dialog的特征就是,它会阻止你原本正在进行的操作,必须停止下来对Dialog进行处理。但是,大多数的人可能并不喜欢这样被打断,也许用户正在处理一项重要的操作,突然弹出一个Dialog遮挡住了他原本的操作,这个时候用户会变得很恼火

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();

2,注意:2.3系统的Dialog很丑,不具有Material Design风格想在老版本下能有Material Design风格必须使用appcompat-v7库中也提供了一个AlertDialog类,完整路径如下

android.support.v7.app.AlertDialog

**这样使用的Dailog就是有Material Design 风格的Dailog,效果如下图
这里写图片描述

二:Toast的使用场景:

Toast只会弹出一段信息,告诉用户某某事情已经发生了,过一段时间后就会自动消失。它完全不会阻挡用户的任何操作,甚至用户也可以完全不用理会Toast。

1,Toast的使用我就不再写了,这里写一个避免多次点击弹出多次Toast的bug解决方案

2,方式一:

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对象,解决问题

3,方式二:

    private boolean isFristClick = true; if (isFristClick) {                        ToastUtil.showShort(MessageListActivity.this, "您没有消息可清除");                        isFristClick = false;                    } else if ((System.currentTimeMillis() - fristTime) > 2000) {                        ToastUtil.showShort(MessageListActivity.this, "您没有消息可清除");                        fristTime = System.currentTimeMillis();                    }

这种方式是控制两次点击事件的差来解决的,这里使用推荐方式一

三:SnackBar的使用场景:

Snackbar和Toast比较相似,但是用途更加广泛,并且它是可以和用户进行交互的。Snackbar使用一个动画效果从屏幕的底部弹出来,过一段时间后也会自动消失。

1,使用SnackBar之前需要添加依赖:

dependencies {    compile 'com.android.support:design:23.4.0'}

2,简单实用的案例:

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

1, Dialog:当提示信息是至关重要的,并且必须要由用户做出决定才能继续的时候,使用Dialog。
2,Toast:当提示信息只是告知用户某个事情发生了,用户不需要对这个事情做出响应的时候,使用Toast。
3,Snackbar:以上两者之外的任何其他场景,Snackbar可能会是你最好的选择。

0 0
原创粉丝点击