今天在做公司项目于的时候,要求做一个圆角图片,一开始想法是在imgView设置一个背景弧度,后来发现有些不好,索性百度了下,百度上实现的方法有很多。我选择用Glide的方式实现
贴一个Glide官方地址:Glide官方地址
不得不说,这个库还是非常好用的,用来加载各种图片也非常方面,强烈推荐。在引用这个库的时候官方最新版4.8.0为
有可能会有sdk版本问题,推荐使用3.5.2
https://github.com/bumptech/glide
要实现圆角只需要一个类
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;
/**
* Created by Administrator on 2018/11/19 0019.
*/
//圆角图片
public class GlideRoundTransform extends BitmapTransformation {
private static float radius = 0f;
public GlideRoundTransform(Context context) {
this(context, 4);
}
public GlideRoundTransform(Context context, int dp) {
super(context);
this.radius = Resources.getSystem().getDisplayMetrics().density * dp;
}
@Override
protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
return roundCrop(pool, toTransform);
}
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);
return result;
}
@Override
public String getId() {
return getClass().getName() + Math.round(radius);
}
}
在自己的项目引用这个类,在需要设置圆角图片的地方使用
imgLeft = findViewById(R.id.jxsh_img_left);
Glide.with(this)
.load(R.mipmap.ceshi1)
.transform(new GlideRoundTransform(this, 12))
.into(imgLeft);
这个12表示圆角的弧度为多少dp。还是很方便的。
最后的最后,别忘了在imgview里面设置
android:scaleType="fitXY"
这是第二篇。继续加油