模糊处理原文:http://blog.jobbole.com/63894/
原文使用Fastblur算法进行模糊处理,巧妙的使用了缩放画布,使其变为1/scaleFactor倍,从而减少了模糊处理的耗时时间。原文方法如下:
private void blur(Bitmap bkg, View view) { float scaleFactor; float radius; scaleFactor = 6; radius = 20; Bitmap overlay = Bitmap.createBitmap((int) (view.getMeasuredWidth() / scaleFactor), (int) (view.getMeasuredHeight() / scaleFactor), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(overlay); canvas.translate(-view.getLeft() / scaleFactor, -view.getTop() / scaleFactor); Log.d("tranlate", -view.getLeft() / scaleFactor + "/" + -view.getTop() / scaleFactor); Paint paint = new Paint(); paint.setFlags(Paint.FILTER_BITMAP_FLAG); canvas.drawBitmap(bkg, 0, 0, paint); overlay = FastBlur.doBlur(overlay, (int) radius, true); view.setBackground(new BitmapDrawable(getResources(), overlay)); }
其中drawBitmap处会导致显示问题,修正为:
canvas.drawBitmap(bkg, null, new Rect(0, 0, (int) (view.getMeasuredWidth() / scaleFactor) , (int) (view.getMeasuredHeight() / scaleFactor)), paint);
即可完整显示原来的图片