在 Android Studio 中未立即设置可见性

Visibility isn't set immediately in Android Studio

在Java中设置ImageView的可见性时,只显示结果,不显示View的中间状态。结果很好,但是在开始和结束之间看不到进度条。

我已经在 UI 线程上尝试了 运行 代码(如代码中所示)。这不会改变任何东西。

Reconnect 是一个 ImageButton,单击它时应该隐藏 ImageView ConnectionStatus,显示一个名为 Connecting 的 ProgressBar,休眠 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);

                }
            });

        }
    });

Thread.sleep() 阻塞当前线程。您的 UI 线程无法处理任何事件,例如在可见性更改后重绘视图。

您可以使用 Handler postDelayed() 到 post a Runnable 稍后执行,而不会阻止线程执行其他内容。所有 View 类 都带有开箱即用的 Handler,因此您只需在 View 之一上调用 postDelayed()