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 mismaview
esto puede no verse bien, para evitar esto puede usar la segunda solución.
2. Segunda solución
Puede usar
ColorGenerator.DEFAULT
lugar deColorGenerator.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;
}
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());