//在show的時候加入addmask
private void addMask(IBinder token) {
WindowManager.LayoutParams wl = new WindowManager.LayoutParams();
wl.width = WindowManager.LayoutParams.MATCH_PARENT;
wl.height = WindowManager.LayoutParams.MATCH_PARENT;
wl.format = PixelFormat.TRANSLUCENT;//不設置這個彈出框的透明遮罩顯示爲黑色
wl.type = WindowManager.LayoutParams.TYPE_APPLICATION_PANEL;//該Type描述的是形成的窗口的層級關係
wl.token = token;//獲取當前Activity中的View中的token,來依附Activity
maskView = new View(context);
maskView.setBackgroundColor(0x7f000000);
maskView.setFitsSystemWindows(false);
maskView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
removeMask();
return true;
}
return false;
}
});
/**
* 通過WindowManager的addView方法創建View,產生出來的View根據WindowManager.LayoutParams屬性不同,效果也就不同了。
* 比如創建系統頂級窗口,實現懸浮窗口效果!
*/
windowManager.addView(maskView, wl);
}
public void removeMask() {
if (null != maskView) {
windowManager.removeViewImmediate(maskView);
maskView = null;
}
}
//記得監聽popupwindow消失時還原activity,
window.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
removeMask();
}
});