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