puzhibing
2026-08-21 5fa94b3718b4a78a4fcea4c97652b0ef20b7de3a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
package com.xw.common.utils;
 
import android.content.Context;
import android.widget.ImageView;
 
import androidx.annotation.DrawableRes;
import androidx.annotation.IdRes;
import androidx.annotation.NonNull;
 
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.luck.picture.lib.engine.ImageEngine;
import com.luck.picture.lib.utils.ActivityCompatHelper;
import com.xw.common.R;
 
public class GlideEngine implements ImageEngine {
 
    /**
     * 加载图片
     *
     * @param context   上下文
     * @param url       资源url
     * @param imageView 图片承载控件
     */
    @Override
    public void loadImage(Context context, String url, ImageView imageView) {
        if (!ActivityCompatHelper.assertValidRequest(context)) {
            return;
        }
        Glide.with(context)
                .load(url)
                .placeholder(R.mipmap.icon_default)
                .error(R.mipmap.icon_default).into(imageView);
    }
 
    @Override
    public void loadImage(Context context, ImageView imageView, String url, int maxWidth, int maxHeight) {
        if (!ActivityCompatHelper.assertValidRequest(context)) {
            return;
        }
        Glide.with(context)
                .load(url)
                .override(maxWidth, maxHeight)
                .placeholder(R.mipmap.icon_default)
                .error(R.mipmap.icon_default).into(imageView);
    }
 
    /**
     * 加载相册目录封面
     *
     * @param context   上下文
     * @param url       图片路径
     * @param imageView 承载图片ImageView
     */
    @Override
    public void loadAlbumCover(Context context, String url, ImageView imageView) {
        if (!ActivityCompatHelper.assertValidRequest(context)) {
            return;
        }
        Glide.with(context)
                .asBitmap()
                .load(url)
                .override(180, 180)
                .sizeMultiplier(0.5f)
                .transform(new CenterCrop(), new RoundedCorners(8))
                .placeholder(R.mipmap.icon_default)
                .error(R.mipmap.icon_default).into(imageView);
    }
 
 
    /**
     * 加载图片列表图片
     *
     * @param context   上下文
     * @param url       图片路径
     * @param imageView 承载图片ImageView
     */
    @Override
    public void loadGridImage(Context context, String url, ImageView imageView) {
        if (!ActivityCompatHelper.assertValidRequest(context)) {
            return;
        }
        Glide.with(context)
                .load(url)
                .override(200, 200)
                .centerCrop()
                .placeholder(R.mipmap.icon_default)
                .error(R.mipmap.icon_default).into(imageView);
    }
 
    @Override
    public void pauseRequests(Context context) {
        if (!ActivityCompatHelper.assertValidRequest(context)) {
            return;
        }
        Glide.with(context).pauseRequests();
    }
 
    @Override
    public void resumeRequests(Context context) {
        if (!ActivityCompatHelper.assertValidRequest(context)) {
            return;
        }
        Glide.with(context).resumeRequests();
    }
 
    /**
     * 加载图片
     *
     * @param imageView   图片控件
     * @param url         链接
     * @param error       加载异常占位图资源id
     * @param placeHolder 占位图资源id
     * @param radius      圆角 单位dp
     */
    public void load(@NonNull ImageView imageView,
                     String url,
                     @DrawableRes int error, @DrawableRes int placeHolder,
                     float radius) {
        float value = radius * imageView.getContext().getResources().getDisplayMetrics().density;
        Glide.with(imageView)
                .load(url)
                .transform(new CenterCrop(), new RoundedCorners((int) value))
                .placeholder(placeHolder)
                .error(error)
                .into(imageView);
    }
 
    private GlideEngine() {
    }
 
    private static final class InstanceHolder {
        static final GlideEngine instance = new GlideEngine();
    }
 
    public static GlideEngine createGlideEngine() {
        return InstanceHolder.instance;
    }
}