Android中解决华为手机设置PopupWindow半透明背景无效果问题

常规写法:

/** 
     * 设置页面的透明度 
     * @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);
    }

你可能感兴趣的:(Android中解决华为手机设置PopupWindow半透明背景无效果问题)