|
@@ -1,11 +1,14 @@
|
|
|
package eu.kanade.tachiyomi.util.view
|
|
|
|
|
|
import android.content.Context
|
|
|
+import android.graphics.Color
|
|
|
import android.graphics.drawable.Animatable
|
|
|
+import android.graphics.drawable.ColorDrawable
|
|
|
import android.widget.ImageView
|
|
|
import androidx.annotation.AttrRes
|
|
|
import androidx.annotation.DrawableRes
|
|
|
import androidx.appcompat.content.res.AppCompatResources
|
|
|
+import androidx.core.graphics.ColorUtils
|
|
|
import coil.ImageLoader
|
|
|
import coil.imageLoader
|
|
|
import coil.load
|
|
@@ -38,20 +41,22 @@ fun ImageView.loadAutoPause(
|
|
|
loader: ImageLoader = context.imageLoader,
|
|
|
builder: ImageRequest.Builder.() -> Unit = {}
|
|
|
) {
|
|
|
- // Build the original request so we can add on our success listener
|
|
|
load(data, loader) {
|
|
|
+ val placeholderColor = ColorUtils.setAlphaComponent(Color.GRAY, 0x1F) // 12% gray
|
|
|
+ placeholder(ColorDrawable(placeholderColor))
|
|
|
+
|
|
|
// Build the original request so we can add on our success listener
|
|
|
- val originalBuild = apply(builder).build()
|
|
|
+ val originalListener = apply(builder).build().listener
|
|
|
listener(
|
|
|
onSuccess = { request, metadata ->
|
|
|
(request.target as? ImageViewTarget)?.drawable.let {
|
|
|
if (it is Animatable && context.animatorDurationScale == 0f) it.stop()
|
|
|
}
|
|
|
- originalBuild.listener?.onSuccess(request, metadata)
|
|
|
+ originalListener?.onSuccess(request, metadata)
|
|
|
},
|
|
|
- onStart = { request -> originalBuild.listener?.onStart(request) },
|
|
|
- onCancel = { request -> originalBuild.listener?.onCancel(request) },
|
|
|
- onError = { request, throwable -> originalBuild.listener?.onError(request, throwable) }
|
|
|
+ onStart = { request -> originalListener?.onStart(request) },
|
|
|
+ onCancel = { request -> originalListener?.onCancel(request) },
|
|
|
+ onError = { request, throwable -> originalListener?.onError(request, throwable) }
|
|
|
)
|
|
|
}
|
|
|
}
|