自定义Glide
package com.sibei.lumbering.utils; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapShader; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.RectF; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; import com.bumptech.glide.load.resource.bitmap.BitmapTransformation; import com.bumptech.glide.load.resource.bitmap.TransformationUtils; import java.security.MessageDigest; import androidx.annotation.NonNull; public class GlideRoundTransform extends BitmapTransformation { private static float radius = 0f; public GlideRoundTransform() { this(4); } public GlideRoundTransform(int dp) { super(); this.radius = Resources.getSystem().getDisplayMetrics().density * dp; } @Override protected Bitmap transform(@NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) { //变换的时候裁切 Bitmap bitmap = TransformationUtils.centerCrop(pool, toTransform, outWidth, outHeight); return roundCrop(pool, bitmap); } @Override public void updateDiskCacheKey(MessageDigest messageDigest) { } private static Bitmap roundCrop(BitmapPool pool, Bitmap source) { if (source == null) { return null; } Bitmap result = pool.get(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888); if (result == null) { result = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888); } Canvas canvas = new Canvas(result); Paint paint = new Paint(); paint.setShader(new BitmapShader(source, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP)); paint.setAntiAlias(true); RectF rectF = new RectF(0f, 0f, source.getWidth(), source.getHeight()); canvas.drawRoundRect(rectF, radius, radius, paint); RectF rectRound = new RectF(0f, 100f, source.getWidth(), source.getHeight()); canvas.drawRect(rectRound, paint); return result; } }
GlideUtil
public class GlideUtils { private Context context; public GlideUtils(Context context){ this.context = context; } public void load(String url, ImageView iv){ Glide.with(context).asBitmap().load(url).error(R.drawable.no_banner).into(iv); } public void load(int url, ImageView iv){ Glide.with(context).asBitmap().load(url).error(R.drawable.no_banner).into(iv); } public void load(Object url, ImageView iv){ Glide.with(context).asBitmap().load(url).error(R.drawable.no_banner).into(iv); } public void loadCire(Object url, ImageView iv){ //设置图片大小 RoundedCorners roundedCorners = new RoundedCorners(15); //通过RequestOptions扩展功能, RequestOptions options = RequestOptions.bitmapTransform(roundedCorners); Glide.with(context).asBitmap().load(url).error(R.drawable.no_banner).apply(options).into(iv); } public static RequestBuilder<Drawable> GlideWithPlaceHolder(Context context, Object object,int radius) { return Glide.with(context).load(object).diskCacheStrategy(DiskCacheStrategy.RESOURCE).apply(new RequestOptions().placeholder(R.drawable.no_banner).dontAnimate().transform(new GlideRoundTransform(radius))); }