1
1
package app.web.drjackycv.presentation.extension
2
2
3
+ import android.app.Activity
4
+ import android.graphics.drawable.Drawable
3
5
import android.view.LayoutInflater
4
6
import android.view.View
5
7
import android.view.ViewGroup
6
8
import android.widget.ImageView
7
9
import androidx.annotation.DrawableRes
8
10
import androidx.annotation.LayoutRes
9
11
import androidx.appcompat.content.res.AppCompatResources
12
+ import androidx.core.app.ActivityCompat.startPostponedEnterTransition
10
13
import app.web.drjackycv.presentation.R
11
14
import app.web.drjackycv.presentation.base.util.GlideApp
15
+ import com.bumptech.glide.load.DataSource
16
+ import com.bumptech.glide.load.engine.GlideException
17
+ import com.bumptech.glide.request.RequestListener
12
18
import com.bumptech.glide.request.RequestOptions
19
+ import com.bumptech.glide.request.target.Target
13
20
14
21
fun View.gone () {
15
22
visibility = View .GONE
@@ -28,7 +35,8 @@ fun ViewGroup.inflate(@LayoutRes layoutRes: Int, attachToRoot: Boolean = false):
28
35
29
36
fun ImageView.load (
30
37
url : String ,
31
- @DrawableRes placeholderRes : Int = R .drawable.ic_cloud_download
38
+ @DrawableRes placeholderRes : Int = R .drawable.ic_cloud_download,
39
+ activity : Activity ? = null
32
40
) {
33
41
val safePlaceholderDrawable = AppCompatResources .getDrawable(context, placeholderRes)
34
42
val requestOptions = RequestOptions ().apply {
@@ -39,6 +47,33 @@ fun ImageView.load(
39
47
.with (context)
40
48
.setDefaultRequestOptions(requestOptions)
41
49
.load(url)
50
+ .dontAnimate()
51
+
52
+ activity?.let {
53
+ glideRequest
54
+ .listener(object : RequestListener <Drawable > {
55
+ override fun onLoadFailed (
56
+ e : GlideException ? ,
57
+ model : Any? ,
58
+ target : Target <Drawable >? ,
59
+ isFirstResource : Boolean
60
+ ): Boolean {
61
+ startPostponedEnterTransition(it)
62
+ return false
63
+ }
64
+
65
+ override fun onResourceReady (
66
+ resource : Drawable ,
67
+ model : Any ,
68
+ target : Target <Drawable >,
69
+ dataSource : DataSource ,
70
+ isFirstResource : Boolean
71
+ ): Boolean {
72
+ startPostponedEnterTransition(it)
73
+ return false
74
+ }
75
+ })
76
+ }
42
77
43
78
glideRequest.into(this )
44
79
}
0 commit comments