0

我正在使用 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 缓存,但似乎没有任何效果,而且我无法找出问题所在。

4

0 回答 0