Я Android новичок. Я следовал великолепной серии учебных пособий по коду в потоке , и особенно одному из его видео, в которых рассказывается, как создать ti c ta c toe game .
Я расширил функциональность этого урока, чтобы экспериментировать и изучать некоторые вещи по пути.
Там, где я сейчас нахожусь, у меня есть функциональная игра для 2 игроков, и если игрок выигрывает (или есть ничья), я раскрашиваю выигрышный ряд и предоставляю пользователю снэк-бар, который после нажатия будет сбросьте доску и позвольте пользователям продолжить игру. Я решил использовать снэк-бар, потому что он хорошо выглядит и, что самое главное, сохраняет экран (игровое поле) видимым, чтобы пользователи могли видеть выигрышную строку.
Я немного исследовал и обнаружил , что при использовании LENGTH_INDEFINITE
при создании закусочной следует заботиться о том, чтобы закусочная оставалась видимой и не закрывалась. Код, где я создаю снэк-бар, находится здесь:
Snackbar snackbar = Snackbar.make(findViewById(R.id.rootLayout), "Κέρδισε ο παίκτης 2 !!!", Snackbar.LENGTH_INDEFINITE);
snackbar.setAction("OK", new View.OnClickListener() {
@Override
public void onClick(View v) {
updatePointsText();
resetBoard();
Toast.makeText(MainActivity.this, "Παίξτε ξανά...", Toast.LENGTH_SHORT).show();
}
});
snackbar.show();
Теперь все работает нормально, , пока пользователь нажимает кнопку «ОК» на снэк-баре . Однако проблема в том, что, хотя снэк-бар виден, пользователь все равно может щелкнуть в любом месте доски, например, в одной из оставшихся ячеек, и это портит игру.
В идеале я хотел бы отключить все клики внутри приложения и удерживайте нажатой только кнопку «ОК» на снэк-баре.
Я попытался реализовать второе прозрачное действие, передав ему необходимые переменные, и активировать его только с сообщением и кнопкой. это возвращает пользователя к предыдущему действию, но, хотя мне это удалось в определенной степени, оно кажется слишком сложным, и я столкнулся с несколькими проблемами.
Таким образом, вопрос заключается в следующем:
Есть ли способ отключить все клики в приложении, кроме кнопки панели быстрого доступа?
Или, возможно, мне следует использовать что-то еще, а не снэк-бар, который обладает этой присущей ему функциональностью (возможно, что-то вроде AlertDialog), но может иметь разумный размер и располагаться таким образом, чтобы основная часть экрана оставалась видимой ?
Вместо того, чтобы копировать весь мой код, я сделал видео запуска приложения, где вы можете видеть, что снэк-бар работает нормально, если пользователь нажимает на него, и второе видео, где вы можете увидеть, как приложение испортится, если пользователь решит щелкнуть в другом месте на доске.
Видео следуют:
Видео работает нормально:
видео показывая проблему с текущей реализацией: