废话不说,直接上代码,Kotlin版本
1、圆形图片
var headIv = ImageView()
val options = RequestOptions.circleCropTransform()//圆形图片
options.error(R.mipmap.ic_logo).placeholder(R.mipmap.ic_logo)//错误图、占位图
val transforms = Glide.with(mContext).load(R.mipmap.ic_logo).apply(RequestOptions().circleCrop())//解决占位图非圆形问题
Glide.with(mContext).load(item!!.user_icon).apply(options).thumbnail(transforms).into(headIv)
2、圆角图片
var headIv = ImageView()
val options = RequestOptions()//圆形图片
options.transform(GlideRoundTransform(mContext,5))//设置圆角大小
options.error(R.mipmap.ic_logo).placeholder(R.mipmap.ic_logo)//错误图、占位图
Glide.with(mContext).load(item!!.user_icon).apply(options).into(headIv)
- 附上GlideRoundTransform 类的代码(java)
package com.green.mines.utils;
import android.content.Context;
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 java.security.MessageDigest;
/***
* glide 图片设置圆角
*
* //第一个是上下文,第二个是圆角的弧度
* RequestOptions myOptions = new RequestOptions()
* .transform(new GlideRoundTransform(this,30));
*/
public class GlideRoundTransformextends BitmapTransformation {
private final Contextcontext;
private static float radius =0f;
public GlideRoundTransform(Context context) {
this(context, 4);
}
public GlideRoundTransform(Context context, int dp) {
this.context = context;
this.radius = Resources.getSystem().getDisplayMetrics().density * dp;
}
@Override
protected Bitmaptransform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
return roundCrop(pool, toTransform);
}
private static BitmaproundCrop(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);
return result;
}
public StringgetId() {
return getClass().getName() + Math.round(radius);
}
@Override
public void updateDiskCacheKey(MessageDigest messageDigest) {
}
}
网友评论