Aks*_*han 2 java android colors
我想将背景颜色设置为我的布局,颜色必须随机生成,直到现在我使用此代码生成颜色但颜色太深,但我不想要这些深色,只需要浅色和柔和的颜色.
Random rnd = new Random();
int r = rnd.nextInt(155) + 100; // 128 ... 255
int g = rnd.nextInt(155) + 010; // 128 ... 255
int b = rnd.nextInt(155) + 001; // 128 ... 255
int clr = Color.rgb(r, g, b);
Run Code Online (Sandbox Code Playgroud)
Xav*_*ler 11
我不明白为什么你为每个频道添加不同的数字.目前的结果是您主要生成红色.
此外,如果您0在数字前面放置一个前导,它将被解释为八进制数字.换句话说,它被解释为基数8.
所以010实际上是一个八进制数,十进制等值是直觉反驳的8.同样适用001,但在这种情况下,八进制数与十进制数相同.1八进制中的等价1于十进制.
此外,您不要为您的Random实例使用种子.这非常糟糕,因为这意味着您将始终生成完全相同的颜色.你需要使用来自足够随机来源的种子System.currentTimeMillis().
但是,让我们谈谈这一点:
您可以通过随机选择每个通道的值,然后将其与白色或其他柔和颜色混合来生成随机柔和颜色.尝试这样的事情:
final Random mRandom = new Random(System.currentTimeMillis());
public int generateRandomColor() {
// This is the base color which will be mixed with the generated one
final int baseColor = Color.WHITE;
final int baseRed = Color.red(baseColor);
final int baseGreen = Color.green(baseColor);
final int baseBlue = Color.blue(baseColor);
final int red = (baseRed + mRandom.nextInt(256)) / 2;
final int green = (baseGreen + mRandom.nextInt(256)) / 2;
final int blue = (baseBlue + mRandom.nextInt(256)) / 2;
return Color.rgb(red, green, blue);
}
Run Code Online (Sandbox Code Playgroud)
您可以选择浅灰色作为基色或其他一些您喜欢的柔和色.您可能不应该选择白色作为基色,因为生成的颜色往往是亮的,白色文本很容易看到.尝试稍微深一点的色调或最好的结果你喜欢的一些柔和的颜色.
| 归档时间: |
|
| 查看次数: |
3498 次 |
| 最近记录: |