我正在从位图生成调色板。我确保获得一个有效的充满活力的色板并将该色板的getTitleTextColor()
设置为文本颜色。文档说:
返回适当的颜色以用于显示在此Swatch颜色上方的任何“标题”文本。保证该颜色具有足够的对比度。
我获得文字颜色并进行设置后,几乎看不到文字。
码:
Palette.from(bmp).generate(new Palette.PaletteAsyncListener() {
public void onGenerated(Palette palette) {
Palette.Swatch swatch = palette.getVibrantSwatch();
if(swatch != null) {
Log.d(TAG, "Vibrant swatch found");
tvTitle.setTextColor(swatch.getTitleTextColor());
} else {
Log.d(TAG, "No color swatch found");
tvTitle.setTextColor(palette.getDarkVibrantColor(defaultColor));
}
}
});
注意:这将注销“找到了充满活力的色板”
结果:
看到图片左下方的文字了吗?我也是....
值得注意的是:
我尝试了多个位图,它们的结果相同,只是灰度不同。
TextView alpha是100%。
编辑:
This is what I am trying to accomplish
最佳答案
根据this blog:
不同的文本颜色大致匹配相同名称的材料设计标准样式。标题文本的颜色将随着文本的变大而变得更加半透明,因此需要较小的颜色对比度。正文文本的颜色将随着文本的变小而变得更加不透明,因此需要从颜色上获得更大的对比度。
因此,我认为您应该改用swatch.getBodyTextColor()
。另请注意,该标题/正文文本颜色与色板的颜色(swatch.getRgb()
)有足够的对比度,色板的颜色应用作文本的背景色。
关于android - Palette.Swatch-充满活力的getTitleTextColor一点也不充满活力,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32408996/