Видимость не устанавливается сразу в Android Studio - PullRequest
1 голос
/ 08 апреля 2019

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

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

Reconnect - это ImageButton, который при нажатии на него должен скрывать ImageView ConnectionStatus, показывать ProgressBar с именем Connecting, sleep 1s, а затем снова скрывать 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);

                }
            });

        }
    });

1 Ответ

1 голос
/ 08 апреля 2019

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...