diff --git a/library/src/main/java/com/daimajia/androidviewhover/tools/Blur.java b/library/src/main/java/com/daimajia/androidviewhover/tools/Blur.java index 2672c31..4976fad 100644 --- a/library/src/main/java/com/daimajia/androidviewhover/tools/Blur.java +++ b/library/src/main/java/com/daimajia/androidviewhover/tools/Blur.java @@ -1,6 +1,8 @@ package com.daimajia.androidviewhover.tools; + import android.graphics.Bitmap; import android.content.Context; +import android.graphics.Matrix; import android.support.v8.renderscript.Allocation; import android.support.v8.renderscript.Element; import android.support.v8.renderscript.RenderScript; @@ -10,12 +12,15 @@ public class Blur { private static final int DEFAULT_BLUR_RADIUS = 10; + private static final float DEFAULT_SCALE = 2; public static Bitmap apply(Context context, Bitmap sentBitmap) { return apply(context, sentBitmap, DEFAULT_BLUR_RADIUS); } public static Bitmap apply(Context context, Bitmap sentBitmap, int radius) { + // shrink half + sentBitmap = scaleBitmap(sentBitmap, 1 / DEFAULT_SCALE); final Bitmap bitmap = sentBitmap.copy(sentBitmap.getConfig(), true); final RenderScript rs = RenderScript.create(context); final Allocation input = Allocation.createFromBitmap(rs, sentBitmap, Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT); @@ -26,13 +31,21 @@ public static Bitmap apply(Context context, Bitmap sentBitmap, int radius) { script.setInput(input); script.forEach(output); output.copyTo(bitmap); - + //zoom bitmap + final Bitmap zoomBitmap = scaleBitmap(bitmap, DEFAULT_SCALE); + bitmap.recycle(); sentBitmap.recycle(); rs.destroy(); input.destroy(); output.destroy(); script.destroy(); - return bitmap; + return zoomBitmap; + } + + public static Bitmap scaleBitmap(Bitmap oldBitmap, float scale) { + Matrix matrix = new Matrix(); + matrix.postScale(scale, scale); + return Bitmap.createBitmap(oldBitmap, 0, 0, oldBitmap.getWidth(), oldBitmap.getHeight(), matrix, true); } -} \ No newline at end of file +}