常规写法:
/**
* 设置页面的透明度
* @param alpha 1表示不透明
*/
private void setWindowAlpha(float alpha) {
if (alpha < 0 || alpha > 1) return;
WindowManager.LayoutParams windowLP = getWindow().getAttributes();
windowLP.alpha = alpha;
getWindow().setAttributes(windowLP);
}
以上常规写法在大部分机型上没问题,但是在华为手机上会失效,修改如下:
适配写法:
private void setWindowAlpha(float alpha) {
if (alpha < 0 || alpha > 1) return;
WindowManager.LayoutParams windowLP = getWindow().getAttributes();
windowLP.alpha = alpha;
if (alpha == 1) {
//不移除该Flag的话,在有视频的页面上的视频会出现黑屏的bug
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
} else {
//此行代码主要是解决在华为手机上半透明效果无效的bug
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
}
getWindow().setAttributes(windowLP);
}