当前位置:网站首页>glide 4.0 之后 和圆角裁剪CenterCrop冲突
glide 4.0 之后 和圆角裁剪CenterCrop冲突
2022-04-22 06:02:00 【guishou先生】
package 包名;
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 com.bumptech.glide.load.resource.bitmap.TransformationUtils;
import java.security.MessageDigest;
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);
// }
//----------上面的是glide 4.0 之前的处理方式的
//---------- 下面是 glide 4.0 之后的处理方式
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) {
Bitmap bitmap = TransformationUtils.centerCrop(pool, toTransform, outWidth, outHeight);
return roundCrop(pool, bitmap);
}
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;
}
public String getId() {
return getClass().getName() + Math.round(radius);
}
@Override
public void updateDiskCacheKey(MessageDigest messageDigest) {
}
}
版权声明
本文为[guishou先生]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_23911165/article/details/122384528
边栏推荐
猜你喜欢
随机推荐
使用RecyclerView实现左右并排分类选择
获取两个时间之间的所有日期
树莓派 3B入门——系统的安装
翻开过去,我们重新来过。
Functions and methods in Scala, function creation, closure and corrilization
Generate order write off QR code and scan the code to complete write off
watch和computed的区别
手写通用防抖与节流函数
毕业设计碎碎念
创新实训(四)前期准备—服务器
手把手教你腾讯云搭建RUOYI系统
创新实训(九)整合
Mobile end touch bottom loading animation (UNI)
Pixel手机电信4G破解(含解锁BL和root)
瀑布流布局 js定位
Intersection of interval lists
pixel手机救砖教程
druid--JDBC工具类案例
EXCEL 保护工作表、工作薄不被破坏
spark优化









