在用popwindow时,如果退出当前activity时闪现了一下黑屏,但是程序也是正常的,并没有崩溃,这里的问题在于消失时并没有清除所有的flag
public void show(View view) {
if (mPopupWindow != null && !mPopupWindow.isShowing()) {
// 设置显示动画
// mPopupWindow.setAnimationStyle(R.style.anim_pop_slide);
mPopupWindow.showAsDropDown(view);
// 设置背景颜色变暗
WindowManager.LayoutParams lp = mContext.getWindow()
.getAttributes();
lp.alpha = 1f;
mContext.getWindow().addFlags(
WindowManager.LayoutParams.FLAG_DIM_BEHIND);
mContext.getWindow().setAttributes(lp);
}
}
在show的时候添加了背景的阴影效果,如果在复写onDismiss方法中用如下:
@Override
public void onDismiss() {
// 设置背景颜色变亮
WindowManager.LayoutParams lp = mContext.getWindow().getAttributes();
lp.alpha = 1.0f;
mContext.getWindow().setAttributes(lp);
onDessmissTo();
}
就会出现黑色闪屏,正常用法如下:
@Override
public void onDismiss() {
// 设置背景颜色变亮
WindowManager.LayoutParams lp = mContext.getWindow().getAttributes();
lp.alpha = 1.0f;
mContext.getWindow().setAttributes(lp);
mContext.getWindow().clearFlags(
WindowManager.LayoutParams.FLAG_DIM_BEHIND);
onDessmissTo();
}
这句话
mContext.getWindow().clearFlags(
WindowManager.LayoutParams.FLAG_DIM_BEHIND);
必须要调用,达到清除背景黑色闪屏的情况