PopupWindow使用时一般会伴随社背景透明度的改变,这时候会出现两个问题:
1.PopupWindow保留在弹出状态时,当按下home键使app缩进后台,然后再次打开app,会发现popwindow和屏幕会出现剧烈抖动
解决:添加flag代码getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
2.PopupWindow解决问题1所带来的伴随问题,当从使用PopupWindow显示之后所在的Activity关闭而暴露上一个Activity的时候会出现短暂黑屏问题
解决:清除flag代码getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
知道这两个问题顺带就把工具方法提出来方便所有用PopupWindow的地方使用:
/**
* 设置屏幕透明度
* @param activity
* @param f
*/
public static void setScreentAlpha(Activity activity, float f) {
WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
lp.alpha = f;
if (f == 1) {
activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
}else {
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
}
activity.getWindow().setAttributes(lp);
}