我正在从位图生成调色板。我确保获得一个有效的充满活力的色板并将该色板的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));
                }
            }
});


注意:这将注销“找到了充满活力的色板”

结果:

看到图片左下方的文字了吗?我也是....

android - Palette.Swatch-充满活力的getTitleTextColor一点也不充满活力-LMLPHP

值得注意的是:


我尝试了多个位图,它们的结果相同,只是灰度不同。
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/

10-09 06:11