2017-09-14 3 views
0

のためにランダムな暗い色を生成します。は、私は色を生成するためにこれを持っているのTextViewの背景

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

それは動作します。問題は、私のテキストビューのテキストの色が白であり、明るい色を生成するときに、ユーザーはその内容をほとんど見ることができないということです。

暗い色のみを生成する方法はありますか?

+1

暗い色が必要な場合は、確かに上限色度として256を使用したくないのですか?その番号を半分にしてみてください。また、(私が間違っている場合は、これに関する知識が不足していることを許してください)、確かに乱数の種子を変更する必要がありますか? – Paul

+1

'Color#HSVToColor()'メソッドを参照してください – pskink

答えて

2

まず、真のランダムカラーの場合は、System.currentTimeMillis()をシードとして使用する必要があります。常に新しいランダムシーケンスを生成することが保証されています。

第2に、暗い色が欲しい場合は、下限を使用する必要があります。すべての色で255に設定すると、明るい色も表示されるようになります。暗い色が必要な場合は、下限を使用する必要があります。私は手がかりがありませんどのように暗いあなたはバックグラウンドが必要なので、私は数字を供給するつもりはない、あなたはそれを理解する必要があります。しかし、限界の少なくとも150は暗い色を生成するはずですが、暗い色がほしい場合は100または50が良いかもしれません。あなたは良い限界を見つけるために実験する必要があります。私は正直なところ、Paint.netのようなものを使用し、色の値をミックスして暗い色を与えるものを見ることをお勧めします。

+0

私は、Lunarと言うことを試みていましたが、Javaを使用してから数年経ちます... – Paul

1

これのためのより簡単な方法があります。代わりに次のコードを使用してください。

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

比較的暗い色が生成されます。