2015-06-08 51 views
1

我想爲我的佈局設置背景顏色,必須隨機生成顏色,直到現在我使用此代碼生成顏色,但顏色太暗,但我不想要這些深色,只需要光線和柔和的顏色。如何在android中隨機生成光線和柔和的顏色?

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); 
+0

保存您想要在數組或某物中使用的顏色的RGB值。從數組中隨機選擇一個值。 –

回答

8

我不明白你爲什麼給每個通道添加不同的數字。目前的結果將是你主要生成紅色。

此外,如果您將前導碼0置於數字前面,則會將其解釋爲octal number。換句話說,它被解釋爲底座8

所以010實際上是一個八進制數和等價的十進制計數器是直觀8001也是如此,但是在這種情況下,八進制數與小數一樣。十進制中的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); 
} 

你可以選擇淺灰色作爲基礎顏色,或者你喜歡的其他柔和顏色。您應該不會選擇白色作爲基礎顏色,因爲此時生成的顏色傾向於點亮白色文字以便可見。嘗試稍深的色調或最好的結果,你喜歡一些柔和的顏色。

+0

我可以在顏色中添加亮度嗎? –

+0

我不明白這是什麼意思。 –

+0

我越來越輕我會改變常數,但你知道一些亮度嗯,我要去添加圖片或問題參考。 –