我是 Android 编程新手,现在为了练习,我正在尝试制作一个应用程序,其中这个球在屏幕上弹跳,同时改变各种颜色,如红色、绿色、蓝色和黄色。到目前为止,我已经成功地使球弹起,但我目前遇到的问题是让球每三到五秒改变一次颜色,这是到目前为止我所遇到的。这似乎有效,但仅适用于您第一次启动该 Activity ,之后它会返回到随机更改的颜色,而无需等待三秒钟才能更改,谢谢,并感谢任何帮助。
@Override
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);
最佳答案
你的问题是,你开始在 onDraw 中改变颜色。每次重新绘制球时,都会将新的 Runnable 添加到消息队列中。每个 Runnable 只会在添加到队列后 3 秒后执行,但不会从执行前的消息开始执行。
这就是为什么当您开始 Activity 时会出现延迟,但随后会看到更快的变化。
不过,您可以创建一个颜色更改线程,该线程在每个新颜色计算之间有一个内置延迟。这样你就可以得到你想要的延迟。
关于java - Android - 尝试每 3-5 秒更改一次弹跳球的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25479519/