1 第一个重要的区别是AlertDialog不能指定显示位置,只能默认显示在
屏幕最中间(当然也可以通过设置WindowManager参数来改变位置)。
而PopupWindow是可以指定显示位置的,随便哪个位置都可以,更加灵活。
2 AlertDialog是非阻塞线程式对话框:AlertDialog弹出时,后台还可以做事情;
而PopupWindow是阻塞线程式对话框:PopupWindow弹出时,程序会等待,
在PopupWindow退出前,程序一直等待,只有当我们调用了dismiss方法的后,
PopupWindow退出,程序才会向下执行。这两种区别的表现是:
AlertDialog弹出时,背景是黑色的,但是当我们点击背景,AlertDialog会消失,
证明程序不仅响应AlertDialog的操作,还响应其他操作,其他程序没有被阻塞,
这说明了AlertDialog是非阻塞式对话框;PopupWindow弹出时,
背景没有什么变化,但是当我们点击背景的时候,程序没有响应,
只允许我们操作PopupWindow,其他操作被阻塞。
3 PopupWindow的位置按照有无偏移分,可以分为偏移和无偏移两种;按照参照物
的不同,可以分为相对于某个控件(Anchor锚)和相对于父控件