Как отключить все (все касания) кроме кнопки закусочной - PullRequest
0 голосов
/ 15 марта 2020

Я 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), но может иметь разумный размер и располагаться таким образом, чтобы основная часть экрана оставалась видимой ?

Вместо того, чтобы копировать весь мой код, я сделал видео запуска приложения, где вы можете видеть, что снэк-бар работает нормально, если пользователь нажимает на него, и второе видео, где вы можете увидеть, как приложение испортится, если пользователь решит щелкнуть в другом месте на доске.

Видео следуют:

Видео работает нормально:

enter image description here

видео показывая проблему с текущей реализацией:

enter image description here

...