一、內(nèi)容提要
? ? 說道彈框,我們會想到AlertDialog、PopWindow以及BottomSheetDialog,AlertDialog的介紹見之前文章,下面簡單介紹一下PopWindow和BottomSheetDialog,以及它們的不同點。
二、PopWindow
先看一下效果圖:

創(chuàng)建PopWindow的代碼如下:



其中設置動畫的代碼如下:
pop_in.xml

pop_out.xml

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

二、Dialog
顯示效果如下:

創(chuàng)建代碼如下:

綜上所屬,PopupWindow和Dialog的不同點如下:
(1)dialog默認屏幕居中彈出,popupWindow可以設置動態(tài)效果,從上下左右邊緣彈出
(2)popupWindow得手動添加蒙層;dialog自帶蒙層
(3)popupWindow默認不會響應物理back鍵,除非顯示設置了popupWindow.setFocusable(true)或者監(jiān)聽物理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))去掉;其中最本質(zhì)的差別就是,AlertDialog是非阻塞式對話框,AlertDialog彈出時,后臺還可以做事情;而popupWindow是阻塞式對話框,程序會等待,在popupWindow退出前,程序一直等待...