通过    
        
getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
                WindowManager.LayoutParams.FLAG_BLUR_BEHIND);可以让全部背景变模糊,但是现在是想弹出对话框,只让对话框覆盖的区域变模糊,怎么实现呢?
注意 改变透明度和用style的 backgroundDimEnabled属性都不是我要的效果,通过FLAG_BLUR_BEHIND得到的是全屏模糊也不行。
 

解决方案 »

  1.   

    是不是可以考虑加一个imageview同时内部画一个蒙板来实现,以下为我从网上共享的文章中截取,自己改了一下://创建一个新的bitmap  
            Bitmap bitmapWithReflection = Bitmap.createBitmap(width, height, Config.ARGB_8888);
            Canvas canvasRef = new Canvas(bitmapWithReflection); 
            
            //画白底
            canvasRef.drawARGB(0xff, 0xff, 0xff, 0xff);
              
            // 创建一个渐变的蒙版  
            Paint paint = new Paint();  
            LinearGradient shader = new LinearGradient(0,  
                    originalImage.getHeight(), 0, bitmapWithReflection.getHeight()  
                            + reflectionGap, 0x80ffffff, 0x00ffffff, TileMode.CLAMP);  
            // Set the paint to use this shader (linear gradient)  
            paint.setShader(shader);  
            // Set the Transfer mode to be porter duff and destination in  
            paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));  
            // Draw a rectangle using the paint with our linear gradient  
            canvasRef.drawRect(0, height, width, bitmapWithReflection.getHeight()  
                    + reflectionGap, paint);  
          //调用ImageView中的setImageBitmap  
            this.setImageBitmap(bitmapWithReflection); 思路就是新建一个Bitmap,然后再里面画个白底,然后再上面加一个蒙板,我这里给出的效果是渐变效果,你可以改为半透明效果,然后再新建一个imageview,接下来setImageBitmap用这个Bitmap,然后再addView到你想要的地方应该就可以了。
    可能这个方法不是很好,可参考。