一般来说,使用进度条的情况都需要新起个线程来对进度条进行显示操作。
如下面的代码:
pdialog = new ProgressDialog(MyService.this, 0);
pdialog.setButton("cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int i) {
dialog.cancel();
}
});
pdialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
public void onCancel(DialogInterface dialog) {
finish();
}
});
pdialog.setCancelable(true);
pdialog.setMax(1000);
pdialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pdialog.show();
Thread th = new Thread() {
public void run() {
try {
while(!isFinish && pdialog.getProgress() < 1000) { // 该处的变量由其他线程来改变。
pdialog.incrementProgressBy(10);
Thread.sleep(10); // 此处只为观看效果而加
}
pdialog.cancel();
} catch (InterruptedException e) {
pdialog.cancel();
}
}
};
th.start();
startService(i);
对以上代码说明:
1、ProgressDialog的构造方法:第一个参数表明改Dialog的所有者,第二个参数表明该Dialog的Theme样式。
2、pdialog.setButton为该Dialog添加Button
3、pdialog.setOnCancelListener为Dialog添加取消事件的监听。当然使用此监听要把Dialog的canelable设置为true。
4、pdialog.setProgressStyle设置Dialog的Style。一种为ProgressDialog.STYLE_SPINNER,表示圆圈循环类型;一种为ProgressDialog.STYLE_HORIZONTAL,表示水平类型。从常量名很容易区分。