Android中Dialog和Toast及其Snackbar的使用和区别
来源:互联网 发布:为什么不能登录淘宝网 编辑:程序博客网 时间:2024/04/30 06:25
一.Snackbar的使用
连接地址:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0714/3187.html
如果说Dialog和Toast是两个极端的话,那么Snackbar就是处于中间的位置了。Snackbar和Toast比较相似,但是用途更加广泛,并且它是可以和用户进行交互的。Snackbar使用一个动画效果从屏幕的底部弹出来,过一段时间后也会自动消失。
在使用Snackbar之前,首先需要在app/build.gradle中添加相应的依赖:
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:当提示信息是至关重要的,并且必须要由用户做出决定才能继续的时候,使用Dialog。Toast:当提示信息只是告知用户某个事情发生了,用户不需要对这个事情做出响应的时候,使用Toast。Snackbar:以上两者之外的任何其他场景,Snackbar可能会是你最好的选择。
三.自定义Dialog的使用
**总体的思路就是:
- 第一点:我么可以看做一个dialog是一个activity来理解,因为dialog可以自定义,自定义的时候,和anctivity很相似.
- 第二点:我们通过setContetnView(view)来设置一个想要展示的view来作为自定义的dialog来展示出来.
-第三点:在设置自定义dialog的时候我们设置他的样式
**具体的操作:**
- * 初始化自定义对话框的展示属性:第一个属性是展示的宽度,我们可以获取展示的屏幕的宽度
DisplayMetrics displayMetrics=getcontex().getResourecs().getdisplaymetrices();这个类:Andorid.util 包下的DisplayMetrics 类提供了一种关于显示的通用信息,如显示大小,分辨率和字体。这个类中包含当前的宽度,获取displayMetrics.width;就是我们需要设置给自定义dialog的属性,最后自定义的对话框是展示在屏幕上面的,获取窗口的属性,设置dialog的属性;属性就包括对话框的展示的位置和对话框展示的宽度是怎么样子的.
- *获取窗口的属性:
WindowManager.LayoutParams params= getWindow().getAttributes();
- *设置位置 params.gravity = Gravity.bottom; 设置展示的位置
-*设置展示的宽度
params.width = displayMetrics.width;
-*参数变化后重新设置给我窗口
* getWindow()setAttributes(params)**
自定义dialog的代码:
`public class MykeyDialogDemo extends Dialog{
private Button mShow;
private Button mSend;
//首先是自定义对框的设置,第一点就是继承dialog
//里面的构造方法和一般的自定义控件是不相同的
//第一个参数实在直接new的时候获取的
//第二个参数是直接定义了一个style来设置的,我们在这里可以直接给自定义控件设置一个样式:样式中包包括的是背景和是自定义dialog
//是否是需要tittle后名就是在这行这个自定义的dialog的时候是的一些自定义的动画,注意我们常见的自定义dialog是宽和高都是固定好的
//我们需要自定义初始化对话框的高度和位置
//就在设置自定义对话框的样式扥那个构造方法里面来设定,
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //转化一个view View view = View.inflate(getContext(), R.layout.mdialogshowview, null); setContentView(view); //初始化对话框的一些展示属性 //获取屏幕的宽度,设置展示的屏幕的信息
//Andorid.util 包下的DisplayMetrics 类提供了一种关于显示的通用信息,如显示大小,分辨率和字体。
DisplayMetrics metrics = getContext().getResources().getDisplayMetrics(); //获取框 int widthPixels = metrics.widthPixels; // 获取窗口管理 //在获窗口的属性 //设置属性 //将获取的屏幕的宽度设置给自定义对话框的展示 //重新设置属性 WindowManager.LayoutParams params = getWindow().getAttributes(); params.gravity= Gravity.BOTTOM; params.width=widthPixels; getWindow().setAttributes(params); //初始化控件: mShow = (Button) view.findViewById(R.id.btn_show_emotion); //获取发送 mSend = (Button) view.findViewById(R.id.btn_send);}public MykeyDialogDemo(Context context) { this(context,R.style.CustomDialog); //好处就是,在获取自定义对话框的时候,代码获取的时候只传递一个上下文,而不能指定样式,我们在内部设置好了样式}public MykeyDialogDemo(Context context, int themeResId) { super(context, themeResId);}public MykeyDialogDemo(Context context, boolean cancelable, OnCancelListener cancelListener) { super(context, cancelable, cancelListener);}
}`
Demo:地址:
https://github.com/NYK1024212458/CunstomDialogDemo.git
四.自定义Toast
参考图片:
连接地址: http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2013/0302/945.html
- Android中Dialog和Toast及其Snackbar的使用和区别
- Dialog、Toast、Snackbar的区别和使用
- Dialog、Toast、Snackbar的区别和使用
- Android提醒技巧,Dialog、Toast和Snackbar的使用区别
- Android中Dialog、Snackbar、Toast使用区别?
- Android中Dialog、Toast和Snackbar使用场景以及技巧
- Dialog Toast 和 Snackbar的使用经验
- Android 信息提示Dialog、Toast和Snackbar
- Android Dialog、Toast和Snackbar详解
- Android提醒技巧,Dialog、Toast和Snackbar
- Android提醒,Dialog、Toast和Snackbar。
- Android提醒微技巧Dialog、Toast和Snackbar
- Android提醒微技巧,Dialog、Toast和Snackbar
- Android提醒微技巧Dialog、Toast和Snackbar
- Android中snackBar的使用【替换Toast】
- 对于Dialog、Toast和Snackbar的二次熟悉
- Android弹框使用:Dialog&Toast&Snackbar
- Snackbar提示,Toast和Dialog之间
- 【数据结构与算法】二维数组 最大矩形和
- 微信小程序拉下无法刷新问题
- 根据总页数制作的分页按钮,有跳转功能以及多页数的时候中间按钮显示...功能
- Linear Regression Code
- (转转转)AndroidStudio下如何输出jar包给其他开发环境使用
- Android中Dialog和Toast及其Snackbar的使用和区别
- 5. Longest Palindromic Substring
- CSS布局之定位详解(position)
- Windows API概述
- Python学习记录day8-面向对象进阶、反射和异常处理
- android自定义图表的手势处理
- Service的生命周期
- 阿里云ECS云服务器 ASP建站 遇到的问题汇总
- Windows下配置github的ssh