Skip to content
This repository was archived by the owner on May 4, 2023. It is now read-only.

Commit 99f1f27

Browse files
committed
Use Fancy blur. (Fix #191)
1 parent e4d7b93 commit 99f1f27

File tree

1 file changed

+47
-2
lines changed

1 file changed

+47
-2
lines changed

app/src/main/java/com/fox2code/mmm/utils/BlurUtils.java

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
package com.fox2code.mmm.utils;
22

33
import android.app.Activity;
4+
import android.graphics.Bitmap;
5+
import android.graphics.Canvas;
46
import android.os.Build;
57
import android.view.ViewGroup;
68

79
import androidx.annotation.IdRes;
10+
import androidx.annotation.NonNull;
811

12+
import eightbitlab.com.blurview.BlurAlgorithm;
913
import eightbitlab.com.blurview.BlurView;
1014
import eightbitlab.com.blurview.RenderEffectBlur;
1115
import eightbitlab.com.blurview.RenderScriptBlur;
@@ -17,9 +21,50 @@ public static void setupBlur(BlurView blurView, Activity activity, @IdRes int vi
1721

1822
@SuppressWarnings("deprecation")
1923
public static void setupBlur(BlurView blurView, Activity activity, ViewGroup rootView) {
20-
blurView.setupWith(rootView, Build.VERSION.SDK_INT < Build.VERSION_CODES.S ?
21-
new RenderScriptBlur(blurView.getContext()) : new RenderEffectBlur())
24+
blurView.setupWith(rootView, new BlurAlgorithmWrapper(
25+
Build.VERSION.SDK_INT < Build.VERSION_CODES.S ?
26+
new RenderScriptBlur(blurView.getContext()) : new RenderEffectBlur()))
2227
.setFrameClearDrawable(activity.getWindow().getDecorView().getBackground())
2328
.setBlurRadius(4F).setBlurAutoUpdate(true);
2429
}
30+
31+
// Allow to have fancy blur, use more performance.
32+
private static final class BlurAlgorithmWrapper implements BlurAlgorithm {
33+
private final BlurAlgorithm algorithm;
34+
35+
private BlurAlgorithmWrapper(BlurAlgorithm algorithm) {
36+
this.algorithm = algorithm;
37+
}
38+
39+
@Override
40+
public Bitmap blur(Bitmap bitmap, float blurRadius) {
41+
return this.algorithm.blur(bitmap, blurRadius * 6f);
42+
}
43+
44+
@Override
45+
public void destroy() {
46+
this.algorithm.destroy();
47+
}
48+
49+
@Override
50+
public boolean canModifyBitmap() {
51+
return this.algorithm.canModifyBitmap();
52+
}
53+
54+
@NonNull
55+
@Override
56+
public Bitmap.Config getSupportedBitmapConfig() {
57+
return this.algorithm.getSupportedBitmapConfig();
58+
}
59+
60+
@Override
61+
public float scaleFactor() {
62+
return 1f;
63+
}
64+
65+
@Override
66+
public void render(@NonNull Canvas canvas, @NonNull Bitmap bitmap) {
67+
this.algorithm.render(canvas, bitmap);
68+
}
69+
}
2570
}

0 commit comments

Comments
 (0)