Итак, я создаю игру «Симон говорит», и мне интересно, как вы приостанавливаете код в Android Studio. У меня есть метод, который меняет цвет кнопки и меняет его обратно.
Однако, когда мне нужно изменить 2 кнопки, пользователь не может сказать, какая кнопка изменила цвет первой, поскольку я использую таймер обратного отсчета. Я знаю, что если я сплю, пользовательский интерфейс будет зависать, поэтому мне интересно, что я могу сделать.
Это метод, о котором я говорю
public int[] showPattern(final Button[] colours, int score) {
int[] pattern = new int[score + 1];
Random rand = new Random();
for (int j=0;j<score + 1;j++) {
pattern[j] = rand.nextInt(4);
switch (pattern[j]) {
case 0:
new CountDownTimer(2000,2000) {
public void onTick(long millisUntilFinished) {
colours[0].setBackgroundColor(getColor(R.color.lightGreen));
}
public void onFinish() {
colours[0].setBackgroundColor(getColor(R.color.green));
}
}.start();
break;
case 1:
new CountDownTimer(2000,2000) {
public void onTick(long millisUntilFinished) {
colours[1].setBackgroundColor(getColor(R.color.lightBlue));
}
public void onFinish() {
colours[1].setBackgroundColor(getColor(R.color.blue));
}
}.start();
break;
case 2:
new CountDownTimer(2000,2000) {
public void onTick(long millisUntilFinished) {
colours[2].setBackgroundColor(getColor(R.color.lightRed));
}
public void onFinish() {
colours[2].setBackgroundColor(getColor(R.color.red));
}
}.start();
break;
case 3:
new CountDownTimer(2000,2000) {
public void onTick(long millisUntilFinished) {
colours[3].setBackgroundColor(getColor(R.color.lightPurple));
}
public void onFinish() {
colours[3].setBackgroundColor(getColor(R.color.purple));
}
}.start();
break;
}
}
return pattern;
}
Когда я впервые сделал это, я не осознавал, что программа не будет ждать окончания обратного отсчета и затем его выполнения, вместо этого она запускает обратный отсчет и продолжает выполнять следующую итерацию цикла. Я хочу знать, как я могу запустить этот цикл и подождать, пока цвет не изменится, прежде чем перейти к следующей итерации цикла.