From 8814f3f0828e6ac652a29cc9de9f971fd55bca5b Mon Sep 17 00:00:00 2001
From: wjc <1243177876@qq.com>
Date: 星期三, 07 五月 2025 14:54:42 +0800
Subject: [PATCH] 2025年05月07日14:54:39

---
 app/src/main/java/com/hdl/photovoltaic/utils/GlideUtils.java |  144 +++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 119 insertions(+), 25 deletions(-)

diff --git a/app/src/main/java/com/hdl/photovoltaic/utils/GlideUtils.java b/app/src/main/java/com/hdl/photovoltaic/utils/GlideUtils.java
index cfeb8b5..a0e81c4 100644
--- a/app/src/main/java/com/hdl/photovoltaic/utils/GlideUtils.java
+++ b/app/src/main/java/com/hdl/photovoltaic/utils/GlideUtils.java
@@ -9,18 +9,28 @@
 import android.graphics.PorterDuffXfermode;
 import android.graphics.Rect;
 import android.graphics.RectF;
+import android.text.TextUtils;
 import android.widget.ImageView;
 
+import androidx.annotation.Nullable;
+import androidx.appcompat.content.res.AppCompatResources;
 import androidx.core.graphics.drawable.RoundedBitmapDrawable;
 import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory;
 
 import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.DataSource;
+import com.bumptech.glide.load.engine.DiskCacheStrategy;
+import com.bumptech.glide.load.engine.GlideException;
 import com.bumptech.glide.load.resource.bitmap.CenterCrop;
 import com.bumptech.glide.load.resource.bitmap.CircleCrop;
 import com.bumptech.glide.load.resource.bitmap.GranularRoundedCorners;
 import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
+import com.bumptech.glide.load.resource.gif.GifDrawable;
+import com.bumptech.glide.request.RequestListener;
 import com.bumptech.glide.request.RequestOptions;
+import com.bumptech.glide.request.target.Target;
 import com.hdl.photovoltaic.R;
+import com.hdl.photovoltaic.other.HdlLogLogic;
 import com.hdl.photovoltaic.other.HdlThreadLogic;
 
 import java.io.InputStream;
@@ -39,10 +49,11 @@
      * @param imageview 鏄剧ず鍥剧墖缁勪欢
      */
     public static void getGeneralImage(Context context, String url, ImageView imageview) {
-        Glide.with(context)
-                .load(url)
-                .apply(getRequestOptions())
-                .into(imageview);
+        if (url.startsWith("http://") || url.startsWith("https://")) {
+            Glide.with(context).load(url).apply(getRequestOptions(false)).into(imageview);
+        } else {
+            setDefaultImage(context, imageview, true);
+        }
     }
 
     /**
@@ -54,11 +65,43 @@
      * @param granularRoundedCorners 璁剧疆鍥剧墖瑙掑害
      */
     public static void getGranularRoundedCornersImage(Context context, String url, ImageView imageview, GranularRoundedCorners granularRoundedCorners) {
+        if (url.startsWith("http://") || url.startsWith("https://")) {
+
+            Glide.with(context).load(url).apply(getRequestOptions(false)).transform(granularRoundedCorners)//new GranularRoundedCorners(30f,80f,80f,30f)
+                    .into(imageview);
+        } else {
+            setDefaultImage(context, imageview, true);
+        }
+    }
+
+    /**
+     * 鍥剧墖鍥涗釜瑙掔粺涓�鎸囧畾
+     *
+     * @param context   涓婁笅鏂�
+     * @param url       鍥剧墖鍦板潃
+     * @param imageview 鏄剧ず鍥剧墖缁勪欢
+     * @param db        璁剧疆鍥剧墖瑙掑害鍊�
+     */
+    public static void getRoundedCornersImage(Context context, String url, ImageView imageview, int db) {
+        if (!(url.startsWith("http://") || url.startsWith("https://"))) {
+            imageview.setImageDrawable(AppCompatResources.getDrawable(context, R.drawable.plant_default_picture));
+            return;
+        }
+//        if (url.startsWith("http://") || url.startsWith("https://")) {
+
+        RequestOptions roundedCorners = new RequestOptions()
+                .transform(new CenterCrop(), new RoundedCorners((int) UnitConversionUtils.dpToPx(context, db)));
         Glide.with(context)
                 .load(url)
-                .apply(getRequestOptions())
-                .transform(granularRoundedCorners)//new GranularRoundedCorners(30f,80f,80f,30f)
+                .apply(roundedCorners)
+                .placeholder(R.drawable.plant_default_picture)
+                .error(R.drawable.plant_default_picture)
+//                .fallback(R.drawable.plant_default_picture)
+                //Glide鍔犺浇鍥剧墖鍦嗚鏁堟灉涓嶪mageView鐨凷caleType鍐茬獊闂
                 .into(imageview);
+//        } else {
+//            setDefaultImage(context, imageview, userImage);
+//        }
     }
 
     /**
@@ -69,13 +112,18 @@
      * @param imageview      鏄剧ず鍥剧墖缁勪欢
      * @param roundedCorners 璁剧疆鍥剧墖瑙掑害鍊�
      */
-    public static void getRoundedCornersImage(Context context, String url, ImageView imageview, RoundedCorners roundedCorners) {
-        Glide.with(context)
-                .load(url)
-                .apply(getRequestOptions())
-                .transform(new CenterCrop(), roundedCorners)//Glide鍔犺浇鍥剧墖鍦嗚鏁堟灉涓嶪mageView鐨凷caleType鍐茬獊闂
+    public static void getRoundedCornersImage(Context context, String url, ImageView imageview, RoundedCorners roundedCorners, boolean userImage) {
+        if (!(url.startsWith("http://") || url.startsWith("https://"))) {
+            setDefaultImage(context, imageview, userImage);
+            return;
+        }
+//        if (url.startsWith("http://") || url.startsWith("https://")) {
+        Glide.with(context).load(url).apply(getRequestOptions(userImage)).transform(new CenterCrop(), roundedCorners)//Glide鍔犺浇鍥剧墖鍦嗚鏁堟灉涓嶪mageView鐨凷caleType鍐茬獊闂
 //                .transform(roundedCorners)
                 .into(imageview);
+//        } else {
+//            setDefaultImage(context, imageview, userImage);
+//        }
     }
 
     /**
@@ -85,21 +133,23 @@
      * @param url       鍥剧墖鍦板潃
      * @param imageview 鏄剧ず鍥剧墖缁勪欢
      */
-    public static void getCircleCropImage(Context context, String url, ImageView imageview) {
-        Glide.with(context)
-                .load(url)
-                .apply(getRequestOptions())
-                .transform(new CircleCrop())
-                .into(imageview);
+    public static void getCircleCropImage(Context context, String url, ImageView imageview, boolean userImage) {
+
+        if (url.startsWith("http://") || url.startsWith("https://")) {
+            Glide.with(context).load(url).apply(getRequestOptions(userImage)).transform(new CircleCrop()).into(imageview);
+        } else {
+            setDefaultImage(context, imageview, userImage);
+        }
     }
 
 
-    private static RequestOptions getRequestOptions() {
-        return new RequestOptions()
-                .placeholder(R.drawable.default_user)
-                .error(R.drawable.default_user)
-                .fallback(R.drawable.default_user);
+    private static RequestOptions getRequestOptions(boolean userImage) {
+        if (userImage) {
+            return new RequestOptions().placeholder(R.drawable.default_image).error(R.drawable.default_image).fallback(R.drawable.default_image);
+        } else {
+            return new RequestOptions().placeholder(R.drawable.default_user).error(R.drawable.default_user).fallback(R.drawable.default_user);
 //                .override(113, 130);
+        }
 
     }
 
@@ -123,7 +173,7 @@
                     if (conn.getResponseCode() == 200) {
                         InputStream inStream = conn.getInputStream();
                         Bitmap bitmap = BitmapFactory.decodeStream(inStream);
-                        imageView.setImageBitmap(getRoundedCornerBitmap(bitmap,pixels));
+                        imageView.setImageBitmap(getRoundedCornerBitmap(bitmap, pixels));
                     }
                 } catch (Exception e) {
                 }
@@ -140,8 +190,7 @@
     public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, int pixels) {
 
 
-        Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
-                bitmap.getHeight(), Bitmap.Config.ARGB_8888);
+        Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
         Canvas canvas = new Canvas(output);
         final int color = 0xff424242;
         final Paint paint = new Paint();
@@ -160,4 +209,49 @@
         canvas.drawBitmap(bitmap, rect, rect, paint);
         return output;
     }
+
+
+    /**
+     * 鐣岄潰绾挎暟鎹樉绀烘牱寮�
+     *
+     * @param context   涓婁笅鏂�
+     * @param imageview 鏄剧ず鍥剧墖缁勪欢
+     */
+    public static void getDrawableGifAnimation(Context context, ImageView imageview) {
+        if (context == null) {
+            return;
+        }
+        if (imageview == null) {
+            return;
+        }
+        Glide.with(context).asGif().load(R.drawable.null_data_icon)//(res鎴栬�単if鐨剈rl閾炬帴)
+                .diskCacheStrategy(DiskCacheStrategy.ALL).listener(new RequestListener<GifDrawable>() {
+                    @Override
+                    public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<GifDrawable> target, boolean isFirstResource) {
+                        return false;
+                    }
+
+                    @Override
+                    public boolean onResourceReady(GifDrawable resource, Object model, Target<GifDrawable> target, DataSource dataSource, boolean isFirstResource) {
+//                            resource.setLoopCount(1);鎺у埗鎾斁娆℃暟
+                        return false;
+                    }
+                }).into(imageview);
+    }
+
+    private static void setDefaultImage(Context context, ImageView imageview, boolean userImage) {
+        HdlThreadLogic.runMainThread(new Runnable() {
+            @Override
+            public void run() {
+                if (userImage) {
+                    imageview.setImageDrawable(AppCompatResources.getDrawable(context, R.drawable.default_image));
+                } else {
+                    imageview.setImageDrawable(AppCompatResources.getDrawable(context, R.drawable.default_user));
+                }
+            }
+        });
+
+    }
+
+
 }

--
Gitblit v1.8.0