Android項目實戰(zhàn)之Glide 高斯模糊效果的實例代碼
更新時間:2019年06月21日 14:46:59 作者:聽著music睡
這篇文章主要介紹了Android項目實戰(zhàn)之Glide 高斯模糊效果的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
核心需要高斯模糊的庫
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, 14, 3))
.into(allBg);
針對4.+
Glide.with(context)
.load(url)
.apply(RequestOptions.bitmapTransform(new BlurTransformation(25,8)))
.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 = 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項目實戰(zhàn)之Glide 高斯模糊效果的實例代碼,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!
相關文章
Android UI設計系列之自定義ViewGroup打造通用的關閉鍵盤小控件ImeObserverLayout(9)
這篇文章主要介紹了Android UI設計系列之自定義ViewGroup打造通用的關閉鍵盤小控件ImeObserverLayout,具有一定的實用性和參考價值,感興趣的小伙伴們可以參考一下2016-06-06
Android Studio 實現(xiàn)將support庫改成Androidx
這篇文章主要介紹了Android Studio 實現(xiàn)將support庫改成Androidx,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Android NDK 開發(fā)中 SO 包大小壓縮方法詳解
這篇文章主要為為大家介紹了Android NDK 開發(fā)中 SO 包大小壓縮方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09

