From cbb88109494ffc7916f6639c20ce05c0cec941a9 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 07 四月 2021 15:07:45 +0800 Subject: [PATCH] 3.9.1bug修复 --- library-common/src/com/lcjian/library/util/glide/GlideRoundTransform.java | 29 +++++++++++++++++++++++++---- 1 files changed, 25 insertions(+), 4 deletions(-) diff --git a/library-common/src/com/lcjian/library/util/glide/GlideRoundTransform.java b/library-common/src/com/lcjian/library/util/glide/GlideRoundTransform.java index 098d79a..68cbc84 100644 --- a/library-common/src/com/lcjian/library/util/glide/GlideRoundTransform.java +++ b/library-common/src/com/lcjian/library/util/glide/GlideRoundTransform.java @@ -8,11 +8,15 @@ import android.graphics.Paint; import android.graphics.RectF; import android.support.annotation.NonNull; +import android.util.Log; 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 com.bumptech.glide.util.Util; import java.io.UnsupportedEncodingException; +import java.nio.ByteBuffer; import java.security.MessageDigest; /** @@ -22,8 +26,9 @@ */ public class GlideRoundTransform extends BitmapTransformation { private static final String ID = GlideRoundTransform.class.getClass().getName(); + private static final String TAG = "GlideRoundTransform"; private static byte[] ID_BYTES = null; - private static float radius = 0f; + private float radius = 0f; public GlideRoundTransform(Context context) { this(context, 12); @@ -46,12 +51,16 @@ @Override protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { - return roundCrop(pool, toTransform); + //澶勭悊centercrop + Bitmap bitmap = TransformationUtils.centerCrop(pool, toTransform, outWidth, outHeight); + return roundCrop(pool, bitmap == null ? toTransform : bitmap); } - private static Bitmap roundCrop(BitmapPool pool, Bitmap source) { + private Bitmap roundCrop(BitmapPool pool, Bitmap source) { if (source == null) return null; + + Log.i(TAG, "婧愬浘鐗囧ぇ灏�:" + source.getWidth() + "-" + source.getHeight()); Bitmap result = pool.get(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888); @@ -72,11 +81,23 @@ @Override public int hashCode() { - return ID.hashCode(); + return Util.hashCode(ID.hashCode(), + Util.hashCode(radius)); + } + + @Override + public boolean equals(Object o) { + if (o instanceof GlideRoundTransform) { + GlideRoundTransform other = (GlideRoundTransform) o; + return radius == other.radius; + } + return false; } @Override public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) { messageDigest.update(ID_BYTES); + byte[] radiusData = ByteBuffer.allocate(4).putInt((int) radius).array(); + messageDigest.update(radiusData); } } -- Gitblit v1.8.0