我正在从位图生成调色板。我确保获得一个有效的动态样本并为该样本的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));
}
}
});
注意: 这是注销“Vibrant swatch found”
请参阅图片左下角的文字?我要么......
值得注意的事情:
答案 0 :(得分:2)
根据this blog:
不同的文字颜色大致匹配同名的材料设计标准样式。标题文本颜色将更加半透明,因为文本较大,因此需要较少的颜色对比度。正文文本颜色将更加不透明,因为文本较小,因此需要与颜色形成更多对比。
所以我认为你应该使用swatch.getBodyTextColor()
代替。另请注意,此标题/正文文本颜色与色板的颜色(swatch.getRgb()
)具有足够的对比度,应将其用作文本的背景颜色。