我试图通过循环一段将每种颜色保持一定时间后将TextView的背景从红色切换为黄色到绿色的代码段来创建一个模仿交通信号灯的应用程序。用户将可以通过按下按钮来开始和结束循环。我已经使用CountDownTimers将TextView的每个背景保持一定的时间,并且该方法似乎运行良好。我的代码的当前状态如下:
public void trafficLight() {
lightDisplay.setBackgroundColor(Color.RED);
// Temporary for loop, a do-while loop causes the app to crash
for (int x = 2; x <= 4; x++) {
signalSwitcher(3000, Color.YELLOW);
signalSwitcher(6000, Color.GREEN);
signalSwitcher(9000, Color.RED);
}
}
public void signalSwitcher(long delayTime, final int signalColor) {
new CountDownTimer(delayTime, 1000) {
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
lightDisplay.setBackgroundColor(signalColor);
}
}.start();
我似乎无法使trafficLight方法中的代码循环,因为我还没有找到在背景更改周期完成之前暂停另一个循环迭代的开始的方法。换句话说,当我运行代码时,循环会继续在CountDownTimers中调度任务;它没有计划,等待任务完成,然后重复。
解决该问题的最佳尝试是在signalSwitcher方法的末尾有另一个do-while循环,该循环会重新检查参数,直到最后一个signalSwitcher方法提供退出该循环所需的输入为止。但是,由于尝试运行应用程序时出现空白屏幕,因此该方法似乎无效。
简而言之,如何在执行CountDownTimers内部的代码之前暂停循环?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。