2012-07-19 122 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()); 
相關問題