Видимость не устанавливается сразу в Android Studio

При настройке видимости ImageView в Java отображается только результат, а не промежуточные состояния представления. Результат просто отличный, но между началом и концом индикатор выполнения не виден.

Я уже пробовал запускать код в UI-потоке (как видно из кода). Это ничего не меняет.

Reconnect — это ImageButton, который при нажатии должен скрывать ImageView ConnectionStatus, показывать ProgressBar с именем Connecting, спать 1 с, а затем снова скрывать Progressbard/показывать ImageView.

Reconnect.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            runOnUiThread(new Runnable() {
                @Override
                public void run() {

                    ConnectionStatus.setVisibility(View.INVISIBLE);
                    Connecting.setVisibility(View.VISIBLE);
                    try {
                        Thread.sleep(1000);
                    }
                    catch(InterruptedException e){}
                    Connecting.setVisibility(View.INVISIBLE);
                  ConnectionStatus.setImageResource(R.drawable.ic_baseline_check_24px);
                    ConnectionStatus.setVisibility(View.VISIBLE);

                }
            });

        }
    });
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
35
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Thread.sleep() блокирует текущий поток. Ваш поток пользовательского интерфейса не может обрабатывать какие-либо события, такие как перерисовка представлений после изменения их видимости.

Вы можете использовать HandlerpostDelayed(), чтобы опубликовать Runnable для выполнения позже, не блокируя поток от выполнения других вещей. Все классы View поставляются с Handler из коробки, поэтому вы можете просто вызвать postDelayed() на один из ваших View.

Другие вопросы по теме