核心需要高斯模糊的库
1
|
compile 'jp.wasabeef:glide-transformations:2.0.1' |
针对于3.7的版本
使用方法为:
1
2
3
4
5
6
7
8
|
//加载背景, Glide.with(MusicPlayerActivity. this ) .load(service.getImageUri()) .dontAnimate() .error(R.drawable.no_music_rotate_img) // 设置高斯模糊,模糊程度(最大25) 缩放比例 .bitmapTransform( new BlurTransformation( this , 14 , 3 )) .into(allBg); |
针对4.+
1
2
3
4
|
Glide.with(context) .load(url) .apply(RequestOptions.bitmapTransform( new BlurTransformation( 25 , 8 ))) .into(view); |
BlurTransformation 类源码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; import android.support.annotation.NonNull; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; import com.bumptech.glide.load.resource.bitmap.BitmapTransformation; import java.security.MessageDigest; import jp.wasabeef.glide.transformations.internal.FastBlur; public class BlurTransformation extends BitmapTransformation { private static final int VERSION = 1 ; private static final String ID = "BlurTransformation." + VERSION; private static int MAX_RADIUS = 25 ; private static int DEFAULT_DOWN_SAMPLING = 1 ; private int radius; private int sampling; public BlurTransformation() { this (MAX_RADIUS, DEFAULT_DOWN_SAMPLING); } public BlurTransformation( int radius) { this (radius, DEFAULT_DOWN_SAMPLING); } public BlurTransformation( int radius, int sampling) { this .radius = radius; this .sampling = sampling; } @Override protected Bitmap transform( @NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) { int width = toTransform.getWidth(); int height = toTransform.getHeight(); int scaledWidth = width / sampling; int scaledHeight = height / sampling; Bitmap bitmap = pool.get(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); canvas.scale( 1 / ( float ) sampling, 1 / ( float ) sampling); Paint paint = new Paint(); paint.setFlags(Paint.FILTER_BITMAP_FLAG); canvas.drawBitmap(toTransform, 0 , 0 , paint); bitmap = FastBlur.blur(bitmap, radius, true ); return bitmap; } @Override public String toString() { return "BlurTransformation(radius=" + radius + ", sampling=" + sampling + ")" ; } @Override public boolean equals(Object o) { return o instanceof BlurTransformation && ((BlurTransformation) o).radius == radius && ((BlurTransformation) o).sampling == sampling; } @Override public int hashCode() { return ID.hashCode() + radius * 1000 + sampling * 10 ; } @Override public void updateDiskCacheKey( @NonNull MessageDigest messageDigest) { messageDigest.update((ID + radius + sampling).getBytes(CHARSET)); } } |
总结
以上所述是小编给大家介绍的Android项目实战之Glide 高斯模糊效果的实例代码,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
原文链接:https://www.cnblogs.com/xqxacm/archive/2019/06/21/11063597.html