好吧,到目前为止,我一直在寻找某种方法来解决这个问题,我已经这样做了 5 天了,所以我会尽力解释它,我有这个应用程序,它运行良好我唯一困扰的是球的颜色变化。问题是我希望它每 5 秒改变一次,而不是不断随机改变而无需等待。例如,当应用程序打开时,应用程序中球的颜色为红色,持续约 5 秒,然后变为蓝色,再等待 5 秒,然后变为另一种颜色。我试图在代码中找出 onDraw 不断随机改变颜色而不等待的地方?我真的很感激任何帮助或建议,因为我已经从事这行有一段时间了。
@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();
}
最佳答案
您无法控制 onDraw 被调用多少次,由 Android 决定。
相反,您可以运行一个单独的线程,该线程将每 5 秒更改一次颜色值,并让您的 onDraw
使用该值。
关于java - Android 改变颜色有延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25536289/