4

ボタンを押すたびにアクティビティの背景色を変えるアプリを書いています。そして、これは私が今まで持っているものです。しかし、それは機能していません!私は何を間違っていますか?

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); などの単一の色を渡すと機能します。

4

5 に答える 5

4

おそらく手遅れですが、同じことを探していたので、このスレッドを読んで問題の解決策を思いつきました。

アルファに 256 を使用し、最大ランダムにも 256 を使用しています。ただし、使用する値は 0 ~ 255 です。それを変更すると、うまく機能します。

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

乾杯

于 2013-02-25T13:58:01.543 に答える
2

これが機能するかどうかはわかりません(ただし、試してみる価値はあります):

onClick() ステートメント内で color = new Random() を初期化してみてください。

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:クリック時にランダムな色を生成しますか?

同様の目標を達成しようとしているようです。

于 2012-07-19T19:25:29.320 に答える
2

ランダムな色については、メソッドを作成しました ( import android.graphics.Color; import 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());
于 2014-02-28T06:04:39.207 に答える
0

正しい道を進んでいるようです。シードを取得することを忘れないでください。そうしないと、毎回同じ「ランダム」値を取得することになります。

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

ポストにまとめてみてください。

view.post(new Runnable() {
      @Override
      public void run() {
          // setbackground here
      }
}
于 2012-07-19T18:41:17.507 に答える
-1
p.setARGB(200,color.nextInt(256),color.nextInt(256),color.nextInt(256));                  
a.setBackgroundColor((p.getColor()));
于 2013-03-02T08:41:49.147 に答える