核心需要高斯模糊的库

compile 'jp.wasabeef:glide-transformations:2.0.1'

针对于3.7的版本

使用方法为:

//加载背景,
Glide.with(MusicPlayerActivity.this)
.load(service.getImageUri())
.dontAnimate()
.error(R.drawable.no_music_rotate_img)
// 设置高斯模糊,模糊程度(最大25) 缩放比例
.bitmapTransform(new BlurTransformation(this, , ))
.into(allBg);

针对4.+

Glide.with(context)
.load(url)
.apply(RequestOptions.bitmapTransform(new BlurTransformation(,)))
.into(view);
BlurTransformation 类源码:
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 = ;
private static final String ID = "BlurTransformation." + VERSION; private static int MAX_RADIUS = ;
private static int DEFAULT_DOWN_SAMPLING = ; 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( / (float) sampling, / (float) sampling);
Paint paint = new Paint();
paint.setFlags(Paint.FILTER_BITMAP_FLAG);
canvas.drawBitmap(toTransform, , , 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 * + sampling * ;
} @Override public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
messageDigest.update((ID + radius + sampling).getBytes(CHARSET));
}
}
05-18 18:56