Palette.Swatch - 充满活力的getTitleTextColor一直没有充满活力

时间:2015-09-05 02:42:56

标签: android palette

我正在从位图生成调色板。我确保获得一个有效的动态样本并为该样本的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”

结果:

请参阅图片左下角的文字?我要么......

ww

值得注意的事情:

  • 我尝试了多个具有相同结果的位图,只是不同的灰色阴影。
  • TextView alpha为100%。

编辑:

This is what I am trying to accomplish

1 个答案:

答案 0 :(得分:2)

根据this blog

  

不同的文字颜色大致匹配同名的材料设计标准样式。标题文本颜色将更加半透明,因为文本较大,因此需要较少的颜色对比度。正文文本颜色将更加不透明,因为文本较小,因此需要与颜色形成更多对比。

所以我认为你应该使用swatch.getBodyTextColor()代替。另请注意,此标题/正文文本颜色与色板的颜色swatch.getRgb())具有足够的对比度,应将其用作文本的背景颜色。