11package com .fox2code .mmm .utils ;
22
33import android .app .Activity ;
4+ import android .graphics .Bitmap ;
5+ import android .graphics .Canvas ;
46import android .os .Build ;
57import android .view .ViewGroup ;
68
79import androidx .annotation .IdRes ;
10+ import androidx .annotation .NonNull ;
811
12+ import eightbitlab .com .blurview .BlurAlgorithm ;
913import eightbitlab .com .blurview .BlurView ;
1014import eightbitlab .com .blurview .RenderEffectBlur ;
1115import 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