一:依赖包:
Glide_github implementation 'com.github.bumptech.glide:glide:4.8.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
二:要想使用GlideApp需要自定义AppGlideModule(需要放在工程目录下)
/** * 用于glide */ @GlideModule public class MyAppGlideModule extends AppGlideModule { }
三:Glide加载带白色边框的圆形图
GlideApp.with(context) .load(url) .circleCrop() .transform(new GlideCircleTransformWithBorder(context,1,context.getResources().getColor(R.color.White))) .diskCacheStrategy(DiskCacheStrategy.ALL) .into(imageView);
public class GlideCircleTransformWithBorder extends BitmapTransformation { private Paint mBorderPaint; private float mBorderWidth; public GlideCircleTransformWithBorder(Context context) { } public GlideCircleTransformWithBorder(Context context, int borderWidth, int borderColor) { mBorderWidth = Resources.getSystem().getDisplayMetrics().density * borderWidth; mBorderPaint = new Paint(); mBorderPaint.setDither(true); mBorderPaint.setAntiAlias(true); mBorderPaint.setColor(borderColor); mBorderPaint.setStyle(Paint.Style.STROKE); mBorderPaint.setStrokeWidth(mBorderWidth); } protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { return circleCrop(pool, toTransform); } private Bitmap circleCrop(BitmapPool pool, Bitmap source) { if (source == null) return null; int size = (int) (Math.min(source.getWidth(), source.getHeight()) - (mBorderWidth / 2)); int x = (source.getWidth() - size) / 2; int y = (source.getHeight() - size) / 2; // TODO this could be acquired from the pool too Bitmap squared = Bitmap.createBitmap(source, x, y, size, size); Bitmap result = pool.get(size, size, Bitmap.Config.ARGB_8888); if (result == null) { result = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); } Canvas canvas = new Canvas(result); Paint paint = new Paint(); paint.setShader(new BitmapShader(squared, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP)); paint.setAntiAlias(true); float r = size / 2f; canvas.drawCircle(r, r, r, paint); if (mBorderPaint != null) { float borderRadius = r - mBorderWidth / 2; canvas.drawCircle(r, r, borderRadius, mBorderPaint); } return result; } @Override public void updateDiskCacheKey(MessageDigest messageDigest) { } }
四:Glide加载圆角矩形图片
//设置图片圆角角度 RoundedCorners roundedCorners= new RoundedCorners(16); //通过RequestOptions扩展功能 RequestOptions options=RequestOptions.bitmapTransform(roundedCorners); GlideApp.with(context) .load(imgUrl) .apply(options) .diskCacheStrategy(DiskCacheStrategy.ALL) .into(imageView);
五:Glide加载圆形图片
GlideApp.with(context) .load(url) .circleCrop() .diskCacheStrategy(DiskCacheStrategy.ALL) .into(imageView);