参考 Dialog 和 Popupwindow
更多见于:Dialog 和 PopUpWindow的抉择
还是比较好奇 Dialog 和 PopupWindow 的区别的,一开始只觉得 Dialog 可能比较容易实现,适合一些简单的对话框,而 PopupWindow 则可以做一下比较复杂的布局。
最后看了别的博客之后发现两者的区别还是有的,在此做做笔记。
AlertDialog 是非阻塞线程的,Popupwindow 是阻塞线程
也就是说 AlertDialog 弹出时,后台还可以进行其他的操作,
而 Popupwindow 弹出的时候后台进程会被阻塞的,直到 Popupwindow 消失才会继续
位置、动画等设置的区别
- AlertDialog 设置位置是比较麻烦的,Popupwindow 则非常的简单。
- 前者加载动画必须用 style 的方式在 xml 文件中编写。
- 前者设置宽高都靠获取到的 dialog 对象,和布局没有太多关联
- 前者可以简单的实现蒙版的效果
还有设置 item 的点击事件的方法、设置宽高的方法都不尽相同,
具体也不详细的解释,看文档就差不多了
至于上面那个博客中提到的 AlertDialog 不可以设置宽为整个屏幕宽这一点,
其实还是可以的,原因是 AlertDialog 不能全屏是其默认的主题导致,
修改它的 style就可以实现,详情见我的另一篇 Dialog 笔记
关于 PopupWindow 也可以看看我写的 PopupWindow 笔记
总结起来,影响选择的因素最大的就是:
进程是否会被阻塞、弹出框的位置是否要求比较的特别(意会)
其他的效果基本都能满足
网友评论