我对 Android 还很陌生,目前我正在开发这个应用程序只是为了练习,但我遇到的问题之一是应用程序中的球每隔几秒左右就会改变颜色,例如大约 3 或 6 秒,问题是我使用的代码首先可以工作,但在几秒钟的延迟后,它会恢复到更改不同的颜色而无需等待。我觉得再次问这个问题很愚蠢,因为上次我没有得到我需要的答案,而且它有点像它的基础知识,而且可能不像我想象的那么重要。希望得到任何帮助?
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
ballBounds.set(ballX-ballRadius, ballY-ballRadius, ballX+ballRadius,ballY+ballRadius);
Handler handler = new Handler();
int rnd = (int)(Math.random() * 4);
switch(rnd){
case 0:handler.postDelayed(new Runnable(){
public void run(){
paint.setColor(Color.BLUE);
}
}, 3000);
break;
case 1: handler.postDelayed(new Runnable(){
public void run(){
paint.setColor(Color.RED);
}
}, 3000);
break;
case 2: handler.postDelayed(new Runnable(){
public void run(){
paint.setColor(Color.GREEN);
}
}, 3000);
break;
case 3:handler.postDelayed(new Runnable(){
public void run(){
paint.setColor(Color.YELLOW);
}
}, 3000);
break;
}
canvas.drawOval(ballBounds, paint);
update();
try{
Thread.sleep(20);
}catch(InterruptedException e){}
invalidate();
}
最佳答案
将你的 case 语句放入 1 个可运行程序中,但它需要一个比 onDraw() 更好的归宿:
protected void onDraw(Canvas canvas) {
ballBounds.set(ballX - ballRadius, ballY - ballRadius, ballX + ballRadius, ballY + ballRadius);
Handler handler = new Handler();
int rnd = (int) (Math.random() * 4);
handler.postDelayed(new Runnable() {
public void run() {
switch (rnd) {
case 0:
paint.setColor(Color.BLUE);
break;
case 1:
paint.setColor(Color.RED);
break;
case 2:
paint.setColor(Color.GREEN);
break;
case 3:
paint.setColor(Color.YELLOW);
break;
}
}
}, 3000);
canvas.drawOval(ballBounds, paint);
update();
try {
Thread.sleep(20);
} catch (InterruptedException e) {
}
invalidate();
}
关于java - Android - 每隔几秒改变球的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25516964/