先介绍下简单的用法
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();现在这个Dialog是Material Design风格的,因为我是在6.0系统上运行的,因此会自动赋予这样的风格。但是如果在老版本系统上运行,比如说2.3系统,会是什么样的效果呢?运行一下就知道了,如下图所示:
Google已经充分考虑到了这一点,在appcompat-v7库中也提供了一个AlertDialog类,完整路径是:
android.support.v7.app.AlertDialogDialog的作用是给用户一个提示信息,并让用户根据提示做出判断。而Dialog的特征就是,它会阻止你原本正在进行的操作,必须停止下来对Dialog进行处理。但是,大多数的人可能并不喜欢这样被打断,也许用户正在处理一项重要的操作,突然弹出一个Dialog遮挡住了他原本的操作,这个时候用户会变得很恼火。
因此,使用Dialog的时候还是谨慎一点比较好,尽量不要给用户带来糟糕的体验感。
代码很简单, Studio 有个快捷键,Toa -> 自动提示 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的方式并不一样,这里会先判断Toast对象是否为空,如果是空的情况下才会调用makeText()方法来去生成一个Toast对象,否则就直接调用setText()方法来设置显示的内容,最后再调用show()方法将Toast显示出来。由于不会每次调用的时候都生成新的Toast对象,因此刚才我们遇到的问题在这里就不会出现了。
Util.showToast(context, "things happened");