108 votes

Android: Générer des couleurs aléatoires sur un clic?

J'ai un ImageView , dans lequel je crée par programme des drawables et les présente à l'utilisateur. Mon objectif est de cliquer sur ledit ImageView et de changer la couleur du dessinable.

Comment pourrais-je m'occuper du bit de changement de couleur aléatoire? Je bricole actuellement avec Random() , Color.argb() et quelques autres choses, mais je n'arrive pas à le faire fonctionner!

351voto

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

ou

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

Bien que dans votre cas, il semble que vous souhaitiez créer un nouveau dessin et l'assigner à votre vue. Quel est le tirable dans votre cas? Est-ce une image, forme, remplir ...

5voto

acntwww Points 151

J'ai rencontré ceci et ceci est mon code, peut aider

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

1voto

Sumit Points 11

Ceci est mon code que j'ai utilisé dans une application, il peut vous aider.

Il génère une couleur aléatoire au toucher

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X