studio - gama de colores en android
Android: establece el fondo de color aleatorio en crear (5)
Lo que quiero es cargar mi aplicación para que tenga aleatoriamente un fondo de cierto color de una lista predefinida de cadenas almacenadas en un archivo de valores xml llamado colores.
Lo que tengo actualmente es un conjunto de colores como fondo definido a través del código de color de cadena usando el editor de gui en eclipse.
Por mi vida no puedo encontrar la forma de obtener el fondo para elegir aleatoriamente una de las 9 cuerdas y mostrarla cada vez que se activa la actividad.
La orientación sobre esto sería invaluable.
En 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>
En onCreate ()
int[] androidColors = getResources().getIntArray(R.array.androidcolors);
int randomAndroidColor = androidColors[new Random().nextInt(androidColors.length)];
view.setBackgroundColor(randomAndroidColor);
Creo que podría encontrar un enfoque fácil, pero cuánto tiempo implementar, elije el color aleatorio de un conjunto de colores definido y luego analiza ese color de cadena con tu fondo.
<?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>
y que este código java
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));
Puede establecer una variable Random rnd = new Random();
como un número aleatorio (generará un número aleatorio de psuedo entre 0 y 1). Entonces podrías decir:
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
De esta forma, el número aleatorio rnd
determinará qué color es el fondo cada vez que se llama onCreate()
.
Hay una respuesta mucho mejor que las proporcionadas.
Si desea un color verdaderamente aleatorio, la elección "aleatoria" de un archivo res no resulta ser tan sólida.
En su lugar, use este fragmento de código:
Random rnd = new Random();
currentStrokeColor = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
puede usar la clase ColorGenerator
para obtener color.code
azar.
fragmento dado a continuación
ColorGenerator generator = ColorGenerator.MATERIAL;
int color=generator.getRandomColor();
aquí puede usar la referencia de vista para establecer el color como
mUserName.setText("Suraj");
mUserName.setTextColor(color); //it will populate name with random color each time you open your activity