Android中PopupWindow和Dialog的區(qū)別

一、內(nèi)容提要

? ? 說道彈框,我們會想到AlertDialog、PopWindow以及BottomSheetDialog,AlertDialog的介紹見之前文章,下面簡單介紹一下PopWindow和BottomSheetDialog,以及它們的不同點。

二、PopWindow

先看一下效果圖:

PopupWindow Gif

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

創(chuàng)建PopWindow的代碼(1)
創(chuàng)建PopWindow的代碼(2)
創(chuàng)建PopWindow的代碼(3)

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

pop_in.xml

pop_in

pop_out.xml

pop_out

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

styles

二、Dialog

顯示效果如下:

Dialog.gif

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

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退出前,程序一直等待...

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容