Android线圈加载夜间占位符,可在灯光模式下立即绘制

Android线圈加载夜间占位符,可在灯光模式下立即绘制,android,android-drawable,android-theme,android-dark-theme,coil,Android,Android Drawable,Android Theme,Android Dark Theme,Coil,我使用COIL库将图像从URL加载到ImageView,在实现暗模式时遇到了一个问题 在我的应用程序中,我有一个RecyclerView,其中每个项目都有一个图像。因为加载是异步的,所以我有一个占位符,在加载图像之前可以一直显示 我使用的扩展功能如下: /** * Load image with placeholder and crossfade animation */ private fun ImageView.loadImageWithPlaceholder( url: Str

我使用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主题化实现暗/光模式之前,一切都很正常。 现在我有两个占位符图像,在可绘制Xdpi和可绘制夜间Xdpi中


在黑暗模式下,一切正常。但在亮模式下,当我用RecyclerView打开活动或快速滚动时,显示的占位符瞬间是暗模式。在这一瞬间之后,将显示右侧占位符图像,稍后将替换为从服务器加载的图像。我已尝试禁用线圈缓存,但似乎没有任何效果,我无法找到问题所在。

我认为线圈不是问题所在。我认为问题在于使用了错误的映像作为后备。尝试用两个不同的字符串创建values/strings.xml和values night/strings.xml,看看会发生什么问题,问题是图像是正确的,除了一瞬间。在灯光模式下,在不到一秒钟的时间内,将显示drawable night文件夹中的图像,然后将其替换为drawable文件夹中的图像。后来,替换为图像加载线圈。我迷路了,不知道这是否是线圈问题