📅  最后修改于: 2023-12-03 14:59:16.116000             🧑  作者: Mango
在 Android 中,进度对话框是一种常用的 UI 组件,用于向用户展示任务的执行进度。本文将介绍如何创建和使用进度对话框。
要创建进度对话框,可以使用 ProgressDialog 类。ProgressDialog 是 AlertDialog 的子类,它可以显示一个带有进度条的对话框。
以下是创建一个简单的进度对话框的示例:
ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setIndeterminate(true);
progressDialog.setMessage("Loading...");
progressDialog.show();
这将创建一个带有无限进度条和消息“Loading...”的进度对话框,并显示它。
如果你有一个任务需要更新进度对话框,你可以使用 setProgress() 方法来更新进度。
以下是一个示例,演示如何更新进度对话框:
ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setIndeterminate(false);
progressDialog.setMessage("Downloading...");
progressDialog.setMax(100);
progressDialog.show();
new Thread(new Runnable() {
public void run() {
int progress = 0;
while (progress < 100) {
try {
Thread.sleep(200);
progress++;
progressDialog.setProgress(progress);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
progressDialog.dismiss();
}
}).start();
这将创建一个有限进度的进度对话框,最大值为 100,并且每 200 毫秒更新一次进度。一旦进度达到 100,进度对话框就会关闭。
如果你希望允许用户取消进度对话框,可以在对话框中添加“取消”按钮,并在用户点击按钮时执行相应的操作。
以下是一个示例,演示如何允许用户取消进度对话框:
ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setIndeterminate(false);
progressDialog.setMessage("Downloading...");
progressDialog.setMax(100);
progressDialog.setCancelable(true);
progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
progressDialog.dismiss();
}
});
progressDialog.show();
new Thread(new Runnable() {
public void run() {
int progress = 0;
while (progress < 100) {
try {
Thread.sleep(200);
progress++;
progressDialog.setProgress(progress);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
progressDialog.dismiss();
}
}).start();
这将创建一个有取消按钮的进度对话框。点击取消按钮时,进度对话框会关闭。
进度对话框是 Android 开发中常用的 UI 组件之一。你可以根据自己的需求使用不同类型的进度对话框,在适当的时候显示进度,更新进度,或者允许用户取消进度对话框。