在 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()
。
在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()
。