Android提醒Dialog、Toast和Snackbar ---站在巨人的肩膀上学习总结
2016-07-27 15:30
615 查看
详情请开偶像博客: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可能会是你最好的选择。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories