我正在编写一个应用程序,每次按下按钮都会更改活动的背景颜色。这就是我现在所拥有的。但它不起作用!我做错了什么?
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 :(得分:4)
这可能为时已晚,但我正在寻找同样的事情,当我读到这个帖子时,我想出了解决问题的方法。
您使用256表示alpha,256表示最大随机数。但要使用的值是0-255。如果你改变它会很好。
Random color = new Random();
a.setBackgroundColor(Color.argb(255, color.nextInt(255), color.nextInt(255), color.nextInt(255)));
干杯
答案 1 :(得分: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()));
}
});
另外,看看这个问题:
似乎它正在努力实现类似的目标。答案 2 :(得分:2)
对于随机颜色我写了一个方法(你需要导入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());
答案 3 :(得分:0)
看起来你正走在正确的道路上。 不要忘记获取种子,否则每次都会得到相同的“随机”值。
Random color = new Random(System.currentTimeMillis());
尝试将其包装在帖子中。
view.post(new Runnable() {
@Override
public void run() {
// setbackground here
}
}
答案 4 :(得分:-1)
p.setARGB(200,color.nextInt(256),color.nextInt(256),color.nextInt(256));
a.setBackgroundColor((p.getColor()));