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.
- ¿Qué ocurre entre onCreate y onStart para Android?
- OnCreate del proveedor de contenido
- Ciclo de vida de la actividad de Android: ¿para qué sirven todos estos métodos?
- Android onCreate o onStartCommand para iniciar el servicio
- Android onCreate se llama después de bloquear la pantalla
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.
- Java.lang.NoSuchMethodError: No hay método estático setOnApplyWindowInsetsListener
- Fragmento en ViewPager devuelve objeto vacío onResume
- SQLiteOpenHelper no puede llamar a onCreate?
- Puntero nulo Excepción - findViewById ()
- Estado de actividad de ahorro en la onPause
- Fragmento de Android OnCreateView llamado dos veces
- Get activityInfo metaData en el método onCreate
- OnCreate, onCreateOptionsMenu, onResume, ¿cuál es el orden de ejecución?
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