【问题标题】:Visibility isn't set immediately in Android StudioAndroid Studio 中没有立即设置可见性
【发布时间】:2019-08-30 01:10:01
【问题描述】:

在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);

                }
            });

        }
    });

【问题讨论】:

    标签: java android visibility


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-13
      • 2015-12-20
      • 2015-02-15
      • 2015-10-22
      • 2016-01-09
      • 2016-07-19
      相关资源
      最近更新 更多