当前位置: 代码迷 >> Android >> 怎么实现Android 布局背景模糊化处理
  详细解决方案

怎么实现Android 布局背景模糊化处理

热度:39   发布时间:2016-04-28 01:51:18.0
如何实现Android 布局背景模糊化处理

在模仿 IOS 密码输入页面的时候发现其背景有模糊处理,于是了解了一下并记录下来,以便使用.在Android 中具体实现方法如下

查考 http://www.cnblogs.com/lipeil/p/3997992.html

private void applyBlur() { 	  	// 获取壁纸管理器  	WallpaperManager wallpaperManager = WallpaperManager.getInstance(this.getContext());  	// 获取当前壁纸  	Drawable wallpaperDrawable = wallpaperManager.getDrawable();  	// 将Drawable,转成Bitmap  	Bitmap bmp = ((BitmapDrawable) wallpaperDrawable).getBitmap();  		blur(bmp); } 

?

下面之所以要进行small 和big的处理,是因为仅仅靠ScriptIntrinsicBlur ?来处理模式,不能到达更模式的效果,如果需要加深模式效果就需要先把背景图片缩小,在处理完之后再放大.这个可以使用Matrix 来实现,而且这样可以缩短模糊化得时间

@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) private void blur(Bitmap bkg) { 	long startMs = System.currentTimeMillis(); 	float radius = 20; 	bkg = small(bkg);	Bitmap bitmap = bkg.copy(bkg.getConfig(), true);	final RenderScript rs = RenderScript.create(this.getContext());	final Allocation input = Allocation.createFromBitmap(rs, bkg, Allocation.MipmapControl.MIPMAP_NONE,			Allocation.USAGE_SCRIPT);	final Allocation output = Allocation.createTyped(rs, input.getType());	final ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));	script.setRadius(radius);	script.setInput(input);	script.forEach(output);	output.copyTo(bitmap);	bitmap = big(bitmap);	setBackground(new BitmapDrawable(getResources(), bitmap)); 	rs.destroy(); 	Log.d("zhangle","blur take away:" + (System.currentTimeMillis() - startMs )+ "ms"); } private static Bitmap big(Bitmap bitmap) {	  Matrix matrix = new Matrix(); 	  matrix.postScale(4f,4f); //长和宽放大缩小的比例	  Bitmap resizeBmp = Bitmap.createBitmap(bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true);	  return resizeBmp; } private static Bitmap small(Bitmap bitmap) {	  Matrix matrix = new Matrix(); 	  matrix.postScale(0.25f,0.25f); //长和宽放大缩小的比例	  Bitmap resizeBmp = Bitmap.createBitmap(bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true);	  return resizeBmp;}

?

?

?

?

?

  相关解决方案