Android中PopupWindow和Dialog的区别

一、内容提要

    说道弹框,我们会想到AlertDialog、PopWindow以及BottomSheetDialog,AlertDialog的介绍见之前文章,下面简单介绍一下PopWindow和BottomSheetDialog,以及它们的不同点。

二、PopWindow

先看一下效果图:

Android中PopupWindow和Dialog的区别_第1张图片
PopupWindow Gif

创建PopWindow的代码如下:

Android中PopupWindow和Dialog的区别_第2张图片
创建PopWindow的代码(1)
Android中PopupWindow和Dialog的区别_第3张图片
创建PopWindow的代码(2)
Android中PopupWindow和Dialog的区别_第4张图片
创建PopWindow的代码(3)

其中设置动画的代码如下:

pop_in.xml

Android中PopupWindow和Dialog的区别_第5张图片
pop_in

pop_out.xml

Android中PopupWindow和Dialog的区别_第6张图片
pop_out

在styles.xml中添加以下代码:

styles

二、Dialog

显示效果如下:

Android中PopupWindow和Dialog的区别_第7张图片
Dialog.gif

创建代码如下:

Android中PopupWindow和Dialog的区别_第8张图片
dialog创建代码

综上所属,PopupWindow和Dialog的不同点如下:

(1)dialog默认屏幕居中弹出,popupWindow可以设置动态效果,从上下左右边缘弹出

(2)popupWindow得手动添加蒙层;dialog自带蒙层

(3)popupWindow默认不会响应物理back键,除非显示设置了popupWindow.setFocusable(true)或者监听物理back键的点击事件;当按下物理back键的时候,dialog会消失

(4)popupWindow在显示之前一定要设置宽高,dialog无此限制

(5)popupWindow没有标题,dialog默认有标题,可以通过dialog.requestWindowFeature(Window.FEATURE_NO_TITLE),取消标题

 (6)二者显示的时候都要设置Gravity,如果不设置,dialog默认是Gravity.CENTER

 (7)二者都有默认的背景,都可以通过setBackgroundDrawable(new ColorDrawable(android.R.color.transparent))去掉;其中最本质的差别就是,AlertDialog是非阻塞式对话框,AlertDialog弹出时,后台还可以做事情;而popupWindow是阻塞式对话框,程序会等待,在popupWindow退出前,程序一直等待...

你可能感兴趣的:(Android中PopupWindow和Dialog的区别)