5

当我遇到以下情况时,我最近一直在使用位图和调色板:

java.lang.IllegalArgumentException: background can not be translucent
    at android.support.v7.graphics.ColorUtils.findMinimumAlpha(ColorUtils.java:90)
    at android.support.v7.graphics.ColorUtils.getTextColorForBackground(ColorUtils.java:127)
    at android.support.v7.graphics.Palette$Swatch.ensureTextColorsGenerated(Palette.java:621)
    at android.support.v7.graphics.Palette$Swatch.getTitleTextColor(Palette.java:605)

深入研究源代码,我发现:

private static int findMinimumAlpha(int foreground, int background, double minContrastRatio) {
    if (Color.alpha(background) != 255) {
        throw new IllegalArgumentException("background can not be translucent");
    }
    ...
}

我使用的图像是这样的:

一个简单的操作栏搜索图标 原始图标

我认为问题与这张图片在某种程度上是完全透明的有关。我目前正在执行与 throw 子句几乎相同的检查Color.alpha(palette.getSomeColor()) != 255,但这只是感觉不对

处理调色板时有没有一种方法可以为我解决这个问题?我觉得这将是一个足够常见的错误,我一定做错了什么,或者错过了一些关于此的指南。

4

0 回答 0