Android: Establecer fondo de color aleatorio en crear

Lo que quiero es cuando carga mi aplicación hasta que al azar tienen un cierto fondo de 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 el fondo definido a través del código de color de la cadena usando el editor gui en eclipse.

Para la vida de mí no puede resolver cómo obtener el fondo para elegir al azar una de las 9 cadenas y mostrarlo cada vez que la actividad se activa.

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

Hay una respuesta mucho mejor que los proporcionados.

Si desea un color Realmente aleatorio, "al azar" la elección de un archivo de resolución no resulta ser tan robusto.

En su lugar, utilice este fragmento de código:

  Random rnd = new Random(); currentStrokeColor = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256)); 

Creo que podría encontrar un enfoque fácil, pero algunos cuánto tiempo para implementar, usted elige el color aleatorio de la matriz definida de colores y que analizar ese color de la cadena a su 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));

Se puede establecer una variable Random rnd = new Random(); Como un número aleatorio (generará un número psuedo-aleatorio 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 manera, el número aleatorio rnd determinará qué color es el fondo cada vez que se llama onCreate() .

Puede utilizar la clase ColorGenerator para obtener color.code aleatorio.

Fragmento dado a continuación

 ColorGenerator generator = ColorGenerator.MATERIAL; int color=generator.getRandomColor(); 

Aquí puede utilizar 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 
  • Establecer el texto de la hiladora antes de seleccionar el elemento
  • Diferencia y usos de onCreate (), onCreateView () y onActivityCreated () en fragmentos
  • Sqlite onCreate () problema Quiero que mi base de datos creada una vez, y no va a cambiar, pero no puedo crear datos cuando estoy en onCreate ()
  • Android: Dejar de recrear la actividad en el cambio de orientación
  • Diferencia entre onCreate () y onStart ()?
  • El servicio onCreate de Android se llama varias veces sin llamar a onDestroy
  • Después de la rotación, onCreate () Fragmento se llama antes onCreate () FragmentActivity
  • Super.onCreate (savedInstanceState);
  • No puedo crear una base de datos SQLite en mi aplicación android
  • Iniciar una actividad con un parámetro
  • Android onCreate onResume
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.