validar studio from ejemplo centercrop android colors imageview

studio - Android: ¿Generas colores aleatorios al hacer clic?



imageview xamarin android (8)

Tengo un ImageView , en el cual estoy programando creativamente y presentándolos al usuario. Mi objetivo 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.


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.

ColorGenerator generator = ColorGenerator.MATERIAL; int color = generator.getColor(position); holder.mEvent_color_strip.setBackgroundColor(color);


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


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


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


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


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 ...


bb.setBackgroundColor(Color.rgb( getRandomInteger(0,255), getRandomInteger(0, 255), getRandomInteger(0, 255) ));


thing.setBackgroundColor(new Random().nextInt());