我不明白你爲什麼給每個通道添加不同的數字。目前的結果將是你主要生成紅色。
此外,如果您將前導碼0
置於數字前面,則會將其解釋爲octal number。換句話說,它被解釋爲底座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);
}
你可以選擇淺灰色作爲基礎顏色,或者你喜歡的其他柔和顏色。您應該不會選擇白色作爲基礎顏色,因爲此時生成的顏色傾向於點亮白色文字以便可見。嘗試稍深的色調或最好的結果,你喜歡一些柔和的顏色。
保存您想要在數組或某物中使用的顏色的RGB值。從數組中隨機選擇一個值。 –