Android: ¿Generas colores aleatorios al hacer clic?

Tengo un ImageView , en el cual estoy progtwigndo creativamente y presentándolos al usuario. Mi objective es hacer clic en dicho ImageView y cambiar el color del dibujo.

¿Cómo iría sobre el bit de cambio de color aleatorio? Actualmente estoy retocando con Random() , Color.argb() y algunas otras cosas, pero parece que no puedo hacerlo funcionar.

 Random rnd = new Random(); paint.setARGB(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256)); 

o

 Random rnd = new Random(); int color = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256)); view.setBackgroundColor(color); 

Aunque en su caso parece que quiere crear un nuevo dibujable y asignarlo a su vista. ¿Qué es realmente el dibujable en tu caso? Es una imagen, forma, relleno …

para obtener valores de color aleatorios, puede usar este método:

 public int getRandomColor(){ Random rnd = new Random(); return Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256)); } 

luego aplica a tus puntos de vista:

 myView.setBackgroundColor(getRandomColor()); 

enter image description here

Me encontré con esto y este es mi código, puede ayudarme

  /** * view-source:http://www.kareno.org/js/colors/ 参考*Get Random background color and the text color for the background * @return 0--》background * 1--》text color */ public static int[] getRandomColor() { Random random = new Random(); int RGB = 0xff + 1; int[] colors = new int[2]; int a = 256; int r1 = (int) Math.floor(Math.random() * RGB); int r2 = (int) Math.floor(Math.random() * RGB); int r3 = (int) Math.floor(Math.random() * RGB); colors[0] = Color.rgb(r1, r2, r3); if((r1 + r2 + r3) > 450) { colors[1] = Color.parseColor("#222222"); }else{ colors[1] = Color.parseColor("#ffffff"); } return colors; } 

Este es mi código que utilicé en una aplicación, puede ayudarte.

Genera un color aleatorio al tacto

  public boolean onTouch(View v, MotionEvent event) { int x = (int)event.getX(); int y = (int) event.getY(); float w = v.getWidth(); if(x < (w * (1.0/3) )){ layout.setBackgroundColor(Color.rgb(255,x,y)); }else if(x < (w * (2.0 / 3))){ layout.setBackgroundColor(Color.rgb(x,255,y)); }else{ layout.setBackgroundColor(Color.rgb(x,y,255)); } return true; } 
 thing.setBackgroundColor(new Random().nextInt()); 
  public static int randomColor(){ float[] TEMP_HSL = new float[]{0, 0, 0}; float[] hsl = TEMP_HSL; hsl[0] = (float) (Math.random() * 360); hsl[1] = (float) (40 + (Math.random() * 60)); hsl[2] = (float) (40 + (Math.random() * 60)); return ColorUtils.HSLToColor(hsl); } 

La solución más precisa de este problema:

-Primero, agregue esto en el gradle (aplicación),

 compile 'com.github.lzyzsd.randomcolor:library:1.0.0' 

luego comstack y reconstruye la aplicación.

-El segundo paso simplemente usarlo de esta manera,

 RandomColor randomColor = new RandomColor(); Button l = findviewbyid(R.id.B1); l.setBackgroundColor(randomColor.randomColor()); 

Link de referencia:

https://github.com/lzyzsd/AndroidRandomColor

Espero que las siguientes dos soluciones te puedan ayudar.

Hay dos formas de obtener colores aleatorios programáticamente para establecer para view

1.Primera solución

 public int randomColor() { Random random= new Random(); return Color.argb(255, random.nextInt(256), random.nextInt(256), random.nextInt(256)); } 

Si está utilizando el adapter en desplazamiento puede obtener colores aleatorios para la misma view esto puede no verse bien, para evitar esto puede usar la segunda solución.

2. Segunda solución

Puede usar ColorGenerator.DEFAULT lugar de ColorGenerator.MATERIAL según su elección. También puede usar cualquier number lugar de position

  ColorGenerator generator = ColorGenerator.MATERIAL; int color = generator.getColor(position); holder.mEvent_color_strip.setBackgroundColor(color); 
 bb.setBackgroundColor(Color.rgb( getRandomInteger(0,255), getRandomInteger(0, 255), getRandomInteger(0, 255) ));