Dialog 和 PopupWindow

参考 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 笔记

总结起来,影响选择的因素最大的就是:
进程是否会被阻塞弹出框的位置是否要求比较的特别(意会)
其他的效果基本都能满足

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容