Android COIL 加载夜间占位符可在灯光模式下瞬间绘制

问题描述

我正在使用 COIL 库将图像从 URL 加载到 ImageView 中,但在实施暗模式时遇到了问题。

在我的应用程序中,我有一个 RecyclerView,其中每个项目都有一个图像。由于加载是异步的,我有一个占位符可绘制,直到加载图像为止。

我使用的扩展函数是这样的:

/**
 * Load image with placeholder and crossfade animation
 */
private fun ImageView.loadImageWithPlaceholder(
    url: String,onSuccess: (() -> Unit)? = null,onError: (() -> Unit)? = null
) {
    load(url) {
        placeholder(R.drawable.ic_sheikah_placeholder)
        crossfade(Constants.CROSSFADE_DURATION_MILLIS)
        listener(onSuccess = { _,_ ->
            onSuccess?.invoke()
        },onError = { _,_ ->
            onError?.invoke()
        })
    }
}

一切正常,直到我使用 MaterialComponents 主题实现了暗/亮模式。 现在我有两个占位符图像,分别是 drawable-Xdpi 和 drawable-night-Xdpi。

在黑暗模式下,一切都按预期工作。但是在浅色模式下,当我使用 RecyclerView 打开 Activity 或快速滚动时,显示的占位符瞬间是深色模式。在那一刻之后,将显示正确的占位符图像,然后替换为从服务器加载的图像。我曾尝试禁用 COIL 缓存,但似乎没有任何效果,而且我无法找出问题所在。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)