通过
getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
WindowManager.LayoutParams.FLAG_BLUR_BEHIND);可以让全部背景变模糊,但是现在是想弹出对话框,只让对话框覆盖的区域变模糊,怎么实现呢?
注意 改变透明度和用style的 backgroundDimEnabled属性都不是我要的效果,通过FLAG_BLUR_BEHIND得到的是全屏模糊也不行。
getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
WindowManager.LayoutParams.FLAG_BLUR_BEHIND);可以让全部背景变模糊,但是现在是想弹出对话框,只让对话框覆盖的区域变模糊,怎么实现呢?
注意 改变透明度和用style的 backgroundDimEnabled属性都不是我要的效果,通过FLAG_BLUR_BEHIND得到的是全屏模糊也不行。
解决方案 »
- android应用,怎么做多语言切换和多主题切换
- 怎么打开gallery里面的缩略图片
- android进程被杀问题
- 安卓播放器小问题
- Android下如何使用Oprofile,Opcontrol --dump没有任何输出,怎么办?
- 绘制一张大图里的小图并且旋转这张图,有什么方法可以实现吗?
- 如何调用系统的wifi管理界面
- 绑定ListView的时候弹出这样的错误,有时正常有时会出现这样的错误
- 有NotificationView这个类吗
- new 出来的android project没有mainactivity.java 和 layout.xml
- 如何不让activity不会被关闭?也就是只onCreate一次?
- 求证运行eclipse的工程,让启动的模拟器加载自己编译出来的sdk的方法?
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到你想要的地方应该就可以了。
可能这个方法不是很好,可参考。