11package com.reactnativemultipleimagepicker
22
33import android.content.Context
4- import android.graphics.Bitmap
5- import android.graphics.PointF
6- import android.graphics.drawable.Drawable
7- import android.view.View
84import android.widget.ImageView
9- import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory
105import com.bumptech.glide.Glide
11- import com.bumptech.glide.request.RequestOptions
12- import com.bumptech.glide.request.target.BitmapImageViewTarget
13- import com.bumptech.glide.request.target.ImageViewTarget
6+ import com.bumptech.glide.load.resource.bitmap.CenterCrop
7+ import com.bumptech.glide.load.resource.bitmap.RoundedCorners
148import com.luck.picture.lib.engine.ImageEngine
15- import com.luck.picture.lib.listener.OnImageCompleteCallback
16- import com.luck.picture.lib.tools.MediaUtils
17- import com.luck.picture.lib.widget.longimage.ImageSource
18- import com.luck.picture.lib.widget.longimage.ImageViewState
19- import com.luck.picture.lib.widget.longimage.SubsamplingScaleImageView
9+ import com.luck.picture.lib.utils.ActivityCompatHelper
2010
11+
12+ /* *
13+ * @author:luck
14+ * @date:2019-11-13 17:02
15+ * @describe:Glide加载引擎
16+ */
2117class GlideEngine private constructor() : ImageEngine {
18+ /* *
19+ * 加载图片
20+ *
21+ * @param context 上下文
22+ * @param url 资源url
23+ * @param imageView 图片承载控件
24+ */
2225 override fun loadImage (context : Context , url : String , imageView : ImageView ) {
26+ if (! ActivityCompatHelper .assertValidRequest(context)) {
27+ return
28+ }
2329 Glide .with (context)
2430 .load(url)
2531 .into(imageView)
2632 }
2733
28- /* *
29- * @param context
30- * @param url
31- * @param imageView
32- * @param longImageView
33- * @param callback
34- */
35- override fun loadImage ( context : Context , url : String ,
36- imageView : ImageView ,
37- longImageView : SubsamplingScaleImageView , callback : OnImageCompleteCallback ) {
34+ override fun loadImage (
35+ context : Context ,
36+ imageView : ImageView ,
37+ url : String ,
38+ maxWidth : Int ,
39+ maxHeight : Int
40+ ) {
41+ if ( ! ActivityCompatHelper .assertValidRequest( context)) {
42+ return
43+ }
3844 Glide .with (context)
39- .asBitmap()
4045 .load(url)
41- .into(object : ImageViewTarget <Bitmap ?>(imageView) {
42- override fun onLoadStarted (placeholder : Drawable ? ) {
43- super .onLoadStarted(placeholder)
44- callback.onShowLoading()
45- }
46-
47- override fun onLoadFailed (errorDrawable : Drawable ? ) {
48- super .onLoadFailed(errorDrawable)
49- callback.onHideLoading()
50- }
51-
52- override fun setResource (resource : Bitmap ? ) {
53- callback.onHideLoading()
54- if (resource != null ) {
55- val eqLongImage = MediaUtils .isLongImg(resource.width,
56- resource.height)
57- longImageView.visibility = if (eqLongImage) View .VISIBLE else View .GONE
58- imageView.visibility = if (eqLongImage) View .GONE else View .VISIBLE
59- if (eqLongImage) {
60- longImageView.isQuickScaleEnabled = true
61- longImageView.isZoomEnabled = true
62- longImageView.setDoubleTapZoomDuration(100 )
63- longImageView.setMinimumScaleType(SubsamplingScaleImageView .SCALE_TYPE_CENTER_CROP )
64- longImageView.setDoubleTapZoomDpi(SubsamplingScaleImageView .ZOOM_FOCUS_CENTER )
65- longImageView.setImage(ImageSource .bitmap(resource),
66- ImageViewState (0 .toFloat(), PointF (0 .toFloat(), 0 .toFloat()), 0 ))
67- } else {
68- imageView.setImageBitmap(resource)
69- }
70- }
71- }
72- })
46+ .override (maxWidth, maxHeight)
47+ .into(imageView)
7348 }
7449
7550 /* *
76- * @param context
77- * @param url
78- * @param imageView
79- * @param longImageView
51+ * 加载相册目录封面
52+ *
53+ * @param context 上下文
54+ * @param url 图片路径
55+ * @param imageView 承载图片ImageView
8056 */
81- override fun loadImage (context : Context , url : String ,
82- imageView : ImageView ,
83- longImageView : SubsamplingScaleImageView ) {
84- Glide .with (context)
85- .asBitmap()
86- .load(url)
87- .into(object : ImageViewTarget <Bitmap ?>(imageView) {
88- override fun setResource (resource : Bitmap ? ) {
89- if (resource != null ) {
90- val eqLongImage = MediaUtils .isLongImg(resource.width,
91- resource.height)
92- longImageView.visibility = if (eqLongImage) View .VISIBLE else View .GONE
93- imageView.visibility = if (eqLongImage) View .GONE else View .VISIBLE
94- if (eqLongImage) {
95- longImageView.isQuickScaleEnabled = true
96- longImageView.isZoomEnabled = true
97- longImageView.setDoubleTapZoomDuration(100 )
98- longImageView.setMinimumScaleType(SubsamplingScaleImageView .SCALE_TYPE_CENTER_CROP )
99- longImageView.setDoubleTapZoomDpi(SubsamplingScaleImageView .ZOOM_FOCUS_CENTER )
100- longImageView.setImage(ImageSource .bitmap(resource),
101- ImageViewState (0 .toFloat(), PointF (0 .toFloat(), 0 .toFloat()), 0 ))
102- } else {
103- imageView.setImageBitmap(resource)
104- }
105- }
106- }
107- })
108- }
109-
110- override fun loadFolderImage (context : Context , url : String , imageView : ImageView ) {
57+ override fun loadAlbumCover (context : Context , url : String , imageView : ImageView ) {
58+ if (! ActivityCompatHelper .assertValidRequest(context)) {
59+ return
60+ }
11161 Glide .with (context)
11262 .asBitmap()
11363 .load(url)
11464 .override (180 , 180 )
115- .centerCrop()
11665 .sizeMultiplier(0.5f )
117- .apply (RequestOptions ().placeholder(R .drawable.picture_image_placeholder))
118- .into(object : BitmapImageViewTarget (imageView) {
119- override fun setResource (resource : Bitmap ? ) {
120- val circularBitmapDrawable = RoundedBitmapDrawableFactory .create(context.resources, resource)
121- circularBitmapDrawable.cornerRadius = 8f
122- imageView.setImageDrawable(circularBitmapDrawable)
123- }
124- })
125- }
126-
127- override fun loadAsGifImage (context : Context , url : String ,
128- imageView : ImageView ) {
129- Glide .with (context)
130- .asGif()
131- .load(url)
66+ .transform(CenterCrop (), RoundedCorners (8 ))
67+ .placeholder(R .drawable.ps_image_placeholder)
13268 .into(imageView)
13369 }
13470
71+ /* *
72+ * 加载图片列表图片
73+ *
74+ * @param context 上下文
75+ * @param url 图片路径
76+ * @param imageView 承载图片ImageView
77+ */
13578 override fun loadGridImage (context : Context , url : String , imageView : ImageView ) {
79+ if (! ActivityCompatHelper .assertValidRequest(context)) {
80+ return
81+ }
13682 Glide .with (context)
13783 .load(url)
13884 .override (200 , 200 )
13985 .centerCrop()
140- .apply ( RequestOptions (). placeholder(R .drawable.picture_image_placeholder) )
86+ .placeholder(R .drawable.ps_image_placeholder )
14187 .into(imageView)
14288 }
14389
144- companion object {
145- private var instance: GlideEngine ? = null
146- fun createGlideEngine (): GlideEngine ? {
147- if (null == instance) {
148- synchronized(GlideEngine ::class .java) {
149- if (null == instance) {
150- instance = GlideEngine ()
151- }
152- }
153- }
154- return instance
90+ override fun pauseRequests (context : Context ) {
91+ if (! ActivityCompatHelper .assertValidRequest(context)) {
92+ return
15593 }
94+ Glide .with (context).pauseRequests()
15695 }
157- }
15896
97+ override fun resumeRequests (context : Context ) {
98+ if (! ActivityCompatHelper .assertValidRequest(context)) {
99+ return
100+ }
101+ Glide .with (context).resumeRequests()
102+ }
103+
104+ private object InstanceHolder {
105+ val instance = GlideEngine ()
106+ }
107+
108+ companion object {
109+ fun createGlideEngine (): GlideEngine {
110+ return InstanceHolder .instance
111+ }
112+ }
113+ }
0 commit comments