调用线程使用进度条,如何在任意时间调用hide函数,进度条都会隐藏
时间: 2024-11-22 21:44:32 浏览: 6
Winform中弹出模式窗口显示进度条示例代码.zip
在Android或iOS应用中,通常使用`ProgressBar`或者其他类型的进度指示器来展示任务执行的进度。如果你想实现一个可以在任意时间隐藏进度条的功能,你可以这样做:
1. **创建 ProgressBar 实例**:在需要显示进度的地方初始化一个 `ProgressDialog`, 并设置它关联到一个 `Handler` 或者 `Runnable`,以便在未来的某个时刻调用 hide()。
```java
ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setCancelable(false); // 阻止用户关闭对话框
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); // 设置样式
// 创建一个 Handler 对象
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == HIDE_PROGRESS) {
progressDialog.dismiss(); // 当接收到特定消息时,隐藏进度条
}
}
};
```
2. **发送 hide 请求**:在你需要隐藏进度的时候,通过 `handler` 发送一个自定义的消息 `HIDE_PROGRESS`。
```java
// 某个地方开始执行耗时操作
new Thread(new Runnable() {
@Override
public void run() {
// 执行任务...
// 在适当的时候,通过 Handler 发送 hide 请求
handler.sendEmptyMessage(HIDE_PROGRESS);
}
}).start();
```
3. **定义 HIDE_PROGRESS 常量**:为了标识这个消息,你需要定义一个常量。
```java
private static final int HIDE_PROGRESS = 0;
```
这样,无论何时你想让进度条消失,只需要在对应的任务完成之后调用 `handler.sendEmptyMessage(HIDE_PROGRESS)`。记得在主线程(UI线程)处理 UI 更新,以避免ANR。
阅读全文