2012-07-19 87 views
4

我正在写一个应用程序,每次按下按钮时都会更改活动的背景颜色。这是我迄今为止所拥有的。但它不工作!我究竟做错了什么?如何在Android中按下按钮时将背景设置为随机颜色?

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Button b = (Button) findViewById(R.id.button1);   
    final View a = findViewById(R.id.m);   
    final Random color = new Random(); 
    final Paint p = new Paint(); 


    b.setOnClickListener(new OnClickListener() { 


     @Override 
     public void onClick(View v) { 

      p.setARGB(256,color.nextInt(256),color.nextInt(256),color.nextInt(256));     
     a.setBackgroundColor((p.getColor())); 

     } 
    }); 
} 

它正在工作,当我通过单一的颜色,例如a.setBackgroundColor(Color.GREEN);

+0

它是什么,当你按下按钮? – FoamyGuy 2012-07-19 18:38:06

+0

@Tim没有。屏幕保持白色。 – 2012-07-19 19:09:17

+1

您是否尝试过使用Color类?像这样:'a.setBackgroundColor(Color.argb(256,color.nextInt(256),color.nextInt(256),color.nextInt(256)));' – Eric 2012-07-19 19:14:27

回答

2

我不知道这是否会工作(但它是值得一试):

尝试的onClick()语句中初始化颜色=新的随机()。

b.setOnClickListener(new OnClickListener() { 


    @Override 
    public void onClick(View v) { 
     color = new Random(); 
     p.setARGB(256,color.nextInt(256),color.nextInt(256),color.nextInt(256));     
    a.setBackgroundColor((p.getColor())); 

    } 
}); 

而且,看这个问题:

Android: Generate random color on click?

好像它试图实现类似的目标。

+0

@Uday好运吗? – Kgrover 2012-07-19 20:30:35

+1

好吧,我实际上是通过随机化alpha值来解决它的。但我不知道为什么通过价值256没有工作!无论如何,感谢您的努力。:) – 2012-07-19 23:46:48

+0

啊,这很奇怪。好吧,如果我帮助所有,你总是可以接受或upvote;) – Kgrover 2012-07-21 03:59:48

0

它看起来就像你在正确的道路上。 不要忘记得到你的种子,否则你每次都会得到相同的“随机”值。

Random color = new Random(System.currentTimeMillis()); 

试着把它包装在一篇文章中。

view.post(new Runnable() { 
     @Override 
     public void run() { 
      // setbackground here 
     } 
} 
+0

不可以。仍然是一样的。 – 2012-07-19 19:13:28

4

这可能太晚了,但我正在寻找同样的事情,当我读这个线程我想出了问题的解决方案。

您使用256为alpha,256也为max random。但使用的值是0-255。如果你改变,它会运作良好。

Random color = new Random(); 
a.setBackgroundColor(Color.argb(255, color.nextInt(255), color.nextInt(255), color.nextInt(255))); 

干杯

+0

哇。 2行代码。大! – SmulianJulian 2015-04-23 20:55:48

+0

int color = 0xFF000000 | rnd.nextInt(0XFFFFFF); – 2016-06-01 16:48:45

-1
p.setARGB(200,color.nextInt(256),color.nextInt(256),color.nextInt(256));     
a.setBackgroundColor((p.getColor())); 
2

对于随机颜色我写了一个方法(你需要进口android.graphics.Color;进口java.util.Random中):

int randomColor() { 
    Random r = new Random(); 
    int red = r.nextInt(256); 
    int green = r.nextInt(256); 
    int blue = r.nextInt(256); 
    return Color.rgb(red, green, blue); 
} 

然后我就像这样使用它:

Paint p = new Paint(); 
p.setColor(randomColor()); 
相关问题