在 Android 中,我们可以使用 ProgressBar 控件来显示处理中或加载中的进度。但是,有时候我们可能需要在特定条件下隐藏或显示这个控件,而可能会遇到困难。以下是一些可能导致问题的原因:
1.使用 setVisibility() 方法无法隐藏 ProgressBar 2.使用 Thread.sleep() 的方式让 ProgressBar 在较长时间内显示不出来 3.使用异步任务的方式无法处理 ProgressBarr 的可见性。
为了解决这些问题,以下是一些可以实现 ProgressBar 显示或隐藏的代码示例:
1.使用 View.INVISIBLE 控制可见性
//隐藏 ProgressBar progressBar.setVisibility(View.INVISIBLE);
//显示 ProgressBar progressBar.setVisibility(View.VISIBLE);
2.使用 Handler 控制延迟无法显示的问题
final Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { // 将 ProgressBar 显示出来。 progressBar.setVisibility(View.VISIBLE); } }, 2000); // 控制延迟的时间
3.使用 AsyncTask 在异步任务中控制 ProgressBar 的可见性
private class AsyncTaskExample extends AsyncTask
private ProgressBar progressBar;
public AsyncTaskExample(ProgressBar progressBar) {
this.progressBar = progressBar;
}
@Override
protected Void doInBackground(Void... voids) {
// 执行异步任务
return null;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
// 在任务开始前,将ProgressBar 显示出来
progressBar.setVisibility(View.VISIBLE);
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
// 在任务完成后,将ProgressBar 隐藏起来。
progressBar.setVisibility(View.GONE);
}
}
// 实例化 AsyncTask 类,并启动任务 AsyncTaskExample asyncTask = new AsyncTaskExample(progressBar); asyncTask.execute();