Android中ProgressDialog的使用
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() {@Overridepublic 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 {@Overridepublic 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() {@Overridepublic void handleMessage(@NonNull Message msg) {if(msg.what == 0) {progressDialog.setProgress(msg.arg1);} else if(msg.what == 1) {this.post(closeDialog);}}};