1 第一個重要的區別是AlertDialog不能指定顯示位置,只能默認顯示在
? 屏幕最中間(當然也可以通過設置WindowManager參數來改變位置)。
? 而PopupWindow是可以指定顯示位置的,隨便哪個位置都可以,更加靈活。
2 AlertDialog是非阻塞線程式對話框:AlertDialog彈出時,后臺還可以做事情;
? 而PopupWindow是阻塞線程式對話框:PopupWindow彈出時,程序會等待,
? 在PopupWindow退出前,程序一直等待,只有當我們調用了dismiss方法的后,
? PopupWindow退出,程序才會向下執行。這兩種區別的表現是:
? AlertDialog彈出時,背景是黑色的,但是當我們點擊背景,AlertDialog會消失,
? 證明程序不僅響應AlertDialog的操作,還響應其他操作,其他程序沒有被阻塞,
? 這說明了AlertDialog是非阻塞式對話框;PopupWindow彈出時,
? 背景沒有什么變化,但是當我們點擊背景的時候,程序沒有響應,
? 只允許我們操作PopupWindow,其他操作被阻塞。
3 PopupWindow的位置按照有無偏移分,可以分為偏移和無偏移兩種;按照參照物
? 的不同,可以分為相對于某個控件(Anchor錨)和相對于父控件