What I want is when I load my app up it to randomly have a certain colored background from a predefined list of strings stored in a values xml file called colours.
In colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="blue" type="color">#FF33B5E5</item>
<item name="purple" type="color">#FFAA66CC</item>
<item name="green" type="color">#FF99CC00</item>
<item name="orange" type="color">#FFFFBB33</item>
<item name="red" type="color">#FFFF4444</item>
<item name="darkblue" type="color">#FF0099CC</item>
<item name="darkpurple" type="color">#FF9933CC</item>
<item name="darkgreen" type="color">#FF669900</item>
<item name="darkorange" type="color">#FFFF8800</item>
<item name="darkred" type="color">#FFCC0000</item>
<integer-array name="androidcolors">
<item>@color/blue</item>
<item>@color/purple</item>
<item>@color/green</item>
<item>@color/orange</item>
<item>@color/red</item>
<item>@color/darkblue</item>
<item>@color/darkpurple</item>
<item>@color/darkgreen</item>
<item>@color/darkorange</item>
<item>@color/darkred</item>
</integer-array>
</resources>
In onCreate()
int[] androidColors = getResources().getIntArray(R.array.androidcolors);
int randomAndroidColor = androidColors[new Random().nextInt(androidColors.length)];
view.setBackgroundColor(randomAndroidColor);
You could set a variable Random rnd = new Random();
as a random number (will generate a psuedo-random number between 0 and 1). Then you could say:
if (rnd < 0.09) {
//pick first colour
} else if (rnd >= 0.09 && rnd < 0.18) {
//pick second colour
} else if (rnd >= 0.18 && rnd < 0.27) {
//pick second colour
} else // etc etc up to 1.0 when you will have 9 options, each with an equal chance of randomly being picked
This way, the random number rnd
will determine which colour the background is each time onCreate()
is called.
you can use ColorGenerator
class to get random color.code
.
snippet given below
ColorGenerator generator = ColorGenerator.MATERIAL;
int color=generator.getRandomColor();
here you can use the view reference to set color like
mUserName.setText("Suraj");
mUserName.setTextColor(color); //it will populate name with random color each time you open your activity
There's a much better answer than the ones provided.
If you want a Truly random color, "randomly" choosing from a res file doesn't prove to be nearly as robust.
Instead, use this code snippet:
Random rnd = new Random();
currentStrokeColor = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
I think I could find an easy approach but some how long to implement ,you choose random color from a defined array of colors and than parse that string color to your background.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="bright_pink">#FF007F</color>
<color name="red">#FF0000</color>
<color name="orange">#FF7F00</color>
<color name="yellow">#FFFF00</color>
<color name="chartreuse">#7FFF00</color>
<color name="green">#00FF00</color>
<color name="spring_green">#00FF7F</color>
<color name="cyan">#00FFFF</color>
<color name="azure">#007FFF</color>
<color name="blue">#0000FF</color>
<color name="violet">#7F00FF</color>
<color name="magenta">#FF00FF</color>
<array name="rainbow">
<item>@color/bright_pink</item>
<item>@color/red</item>
<item>@color/orange</item>
<item>@color/yellow</item>
<item>@color/chartreuse</item>
<item>@color/green</item>
<item>@color/spring_green</item>
<item>@color/cyan</item>
<item>@color/azure</item>
<item>@color/blue</item>
<item>@color/violet</item>
<item>@color/magenta</item>
</array>
and than this java code
String[] array = context.getResources().getStringArray(R.array.animals_array);
String randomStr = array[new Random().nextInt(array.length)];
//here you define your layout `
LinearLayout myLayout = (LinearLayout) findViewById(R.id.that_linear);
myLayout.setBackgroundColor(Color.parseColor(randomStr));
TRY THIS METHOD SIMPLE AND EASY
private boolean isOne = false, isTwo = false, isThree = false, isFour = false, isFive = false;
if(position==0){
holder.llDate.setBackgroundColor(mContext.getResources().getColor(R.color.color1));
holder.view.setBackgroundColor(mContext.getResources().getColor(R.color.color1));
isTwo = true;
}else if(isOne){
holder.llDate.setBackgroundColor(mContext.getResources().getColor(R.color.color1));
holder.view.setBackgroundColor(mContext.getResources().getColor(R.color.color1));
isOne = false;
isTwo = true;
}else if(isTwo){
holder.llDate.setBackgroundColor(mContext.getResources().getColor(R.color.color2));
holder.view.setBackgroundColor(mContext.getResources().getColor(R.color.color2));
isTwo = false;
isThree = true;
}else if(isThree){
holder.llDate.setBackgroundColor(mContext.getResources().getColor(R.color.color3));
holder.view.setBackgroundColor(mContext.getResources().getColor(R.color.color3));
isThree = false;
isFour = true;
}else if(isFour){
holder.llDate.setBackgroundColor(mContext.getResources().getColor(R.color.color4));
holder.view.setBackgroundColor(mContext.getResources().getColor(R.color.color4));
isFour = false;
isFive = true;
}else if(isFive){
holder.llDate.setBackgroundColor(mContext.getResources().getColor(R.color.color5));
holder.view.setBackgroundColor(mContext.getResources().getColor(R.color.color5));
isFive = false;
isOne = true;
}