当我遇到以下情况时,我最近一直在使用位图和调色板:
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
,但这只是感觉不对。
处理调色板时有没有一种方法可以为我解决这个问题?我觉得这将是一个足够常见的错误,我一定做错了什么,或者错过了一些关于此的指南。