Donc, si vous recherchez une belle palette de couleurs, ce n'est peut-être pas une si bonne idée d'utiliser des valeurs totalement aléatoires. Cette approche peut ne pas donner les meilleurs résultats, elle se termine toujours par une sélection de couleurs similaires trop sombres ou trop lumineuses.
Approche semi-aléatoire:
Si vous avez besoin de couleurs fraîches et brillantes, utilisez la classe simple suivante, que j'ai écrite précédemment lorsque j'ai eu les mêmes problèmes. C'est semi-random
et utilise une palette de couleurs prédéfinie:
class RandomColors {
private Stack<Integer> recycle, colors;
public RandomColors() {
colors = new Stack<>();
recycle =new Stack<>();
recycle.addAll(Arrays.asList(
0xfff44336,0xffe91e63,0xff9c27b0,0xff673ab7,
0xff3f51b5,0xff2196f3,0xff03a9f4,0xff00bcd4,
0xff009688,0xff4caf50,0xff8bc34a,0xffcddc39,
0xffffeb3b,0xffffc107,0xffff9800,0xffff5722,
0xff795548,0xff9e9e9e,0xff607d8b,0xff333333
)
);
}
public int getColor() {
if (colors.size()==0) {
while(!recycle.isEmpty())
colors.push(recycle.pop());
Collections.shuffle(colors);
}
Integer c= colors.pop();
recycle.push(c);
return c;
}
}
Approche aléatoire:
Mais si vous envisagez toujours d'utiliser, random approach
vous pouvez utiliser cette seule ligne au lieu de plusieurs lignes de code:
int color= ((int)(Math.random()*16777215)) | (0xFF << 24);
Le but de son utilisation (0xFF << 24)
est de définir la valeur alpha au maximum, ce qui signifie une transparence nulle.