參考 Dialog 和 Popupwindow
更多見于:Dialog 和 PopUpWindow的抉擇
還是比較好奇 Dialog 和 PopupWindow 的區(qū)別的,一開始只覺得 Dialog 可能比較容易實(shí)現(xiàn),適合一些簡單的對(duì)話框蹦玫,而 PopupWindow 則可以做一下比較復(fù)雜的布局只锻。
最后看了別的博客之后發(fā)現(xiàn)兩者的區(qū)別還是有的,在此做做筆記齐饮。
AlertDialog 是非阻塞線程的,Popupwindow 是阻塞線程
也就是說 AlertDialog 彈出時(shí)笤昨,后臺(tái)還可以進(jìn)行其他的操作祖驱,
而 Popupwindow 彈出的時(shí)候后臺(tái)進(jìn)程會(huì)被阻塞的,直到 Popupwindow 消失才會(huì)繼續(xù)
位置瞒窒、動(dòng)畫等設(shè)置的區(qū)別
- AlertDialog 設(shè)置位置是比較麻煩的捺僻,Popupwindow 則非常的簡單。
- 前者加載動(dòng)畫必須用 style 的方式在 xml 文件中編寫崇裁。
- 前者設(shè)置寬高都靠獲取到的 dialog 對(duì)象匕坯,和布局沒有太多關(guān)聯(lián)
- 前者可以簡單的實(shí)現(xiàn)蒙版的效果
還有設(shè)置 item 的點(diǎn)擊事件的方法、設(shè)置寬高的方法都不盡相同拔稳,
具體也不詳細(xì)的解釋葛峻,看文檔就差不多了
至于上面那個(gè)博客中提到的 AlertDialog 不可以設(shè)置寬為整個(gè)屏幕寬這一點(diǎn),
其實(shí)還是可以的巴比,原因是 AlertDialog 不能全屏是其默認(rèn)的主題導(dǎo)致术奖,
修改它的 style就可以實(shí)現(xiàn)礁遵,詳情見我的另一篇 Dialog 筆記
關(guān)于 PopupWindow 也可以看看我寫的 PopupWindow 筆記
總結(jié)起來,影響選擇的因素最大的就是:
進(jìn)程是否會(huì)被阻塞采记、彈出框的位置是否要求比較的特別(意會(huì))
其他的效果基本都能滿足