1.简介
ProgressDialog可以表示操作正在后台进行。如果使用的是转圈的ProgressDialog则可以配合Handler,如果是使用进度条形式的ProgressDialog则可以配合线程使用。
主要方法:
setTitle:设置标题
setMessage:设置对话框消息内容
setIcon:设置图标
setProgress:设置当前进度值
setSecondProgress:设置当前第二进度的数值
setMax:数值最大进度数值
setProgressStyle:设置样式。有两种取值:ProgressDialog.STYLE_HORIZONTAL和ProgressDialog.STYLE_SPINNER
show:显示对话框
isShowing:判断对话框是否显示
dismiss:关闭对话框
setCanceledOnTouchOutside:设置点击对话框外是否取消对话框
2.使用
- 转圈式配合Handler。
progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setTitle("请稍后");
progressDialog.setMessage("正在努力加载中...");
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setIcon(R.mipmap.ic_launcher);
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.show();
handler.postDelayed(closeDialog, 5000);
private Runnable closeDialog = new Runnable() {
@Override
public void run() {
f(progressDialog.isShowing()) {
progressDialog.dismiss();
Toast.makeText(MainActivity.this, "加载完成", Toast.LENGTH_SHORT).show();
}
}
};
- 进度条式配合多线程。
progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setTitle("请稍后");
progressDialog.setMessage("正在努力加载中...");
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setMax(100);
progressDialog.setIcon(R.mipmap.ic_launcher);
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.show();
new freshDialog().start();
private class freshDialog extends Thread {
@Override
public void run() {
for(int i = 0; i < 100; i++) {
Message message = Message.obtain();
message.what = 0;
message.arg1 = i*1;
handler.sendMessage(message);
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
handler.sendEmptyMessage(1);
}
}
private Handler handler = new Handler() {
@Override
public void handleMessage(@NonNull Message msg) {
if(msg.what == 0) {
progressDialog.setProgress(msg.arg1);
} else if(msg.what == 1) {
this.post(closeDialog);
}
}
};