降低android中颜色的亮度?

时间:2014-12-01 13:28:10

标签: java android colors

我正在与AChart Engine合作。

并动态设置颜色。

这是我的代码,

private int getRandomColor() {

    Random rnd = new Random(); 
    int color = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));   
    return color;
 }

我的问题是我也会(随机)获得亮度颜色。

那么如何仅避免亮度颜色?

我的输出:

enter image description here

2 个答案:

答案 0 :(得分:4)

您最好使用HSB(色相,饱和度,亮度)色彩空间而不是RGB色彩空间。您可以使用getHSBColor()代替硬编码饱和度和亮度来保持它们完全相同,只需随机化颜色。

private Color getRandomColor() {
    Random rnd = new Random();
    return Color.getHSBColor(rnd.nextFloat(), 0.5f, 0.5f);
}

答案 1 :(得分:2)

如果我理解正确并且你想要避免鲜艳的颜色,你必须改变这一行:

int color = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));  

到那些行:

int MAX_LEVEL = 128;
int color = Color.argb(255, rnd.nextInt(MAX_LEVEL), rnd.nextInt(MAX_LEVEL), rnd.nextInt(MAX_LEVEL));  

这将导致仅生成更暗的颜色。

如果你只想要浅色,就这样做:

int BASE_LEVEL = 128;
int MAX_LEVEL = 128;
int color = Color.argb(255, BASE_LEVEL + rnd.nextInt(MAX_LEVEL), BASE_LEVEL + rnd.nextInt(MAX_LEVEL), BASE_LEVEL + rnd.nextInt(MAX_LEVEL));