public class MainActivity extends Activity implements OnClickListener{
private static final int MAX_PROGERSS=100;
private ProgressDialog progressDialog;
private Handler progressHandler;
private int progress;
//显示进度对话框,style 表示进度对话框的风格
private void showProgressDialog(int style){
//创建ProgressDialog类的对象实例
progressDialog=new ProgressDialog(this);
progressDialog.setIcon(R.drawable.waitting);
progressDialog.setTitle("正在处理数据…");
progressDialog.setMessage("请稍后……");
//设置进度对话框的风格
progressDialog.setProgressStyle(style);
//设置进度对话框的进度最大值
progressDialog.setMax(MAX_PROGERSS);
//设置进度对话框的‘暂停’按钮
progressDialog.setButton("暂停", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// 删除消息队列中的消息来停止定时器
progressHandler.removeMessages(1);
}
});
//设置进度对话框的‘取消’按钮
progressDialog.setButton2("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// 删除消息队列中的消息来停止定时器
progressHandler.removeMessages(1);
//恢复进度初始值
progress=0;
progressDialog.setProgress(0);
}
});
progressDialog.show();
progressHandler=new Handler(){
public void handleMessage(Message msg){
super.handleMessage(msg);
if(progress>=MAX_PROGERSS){
//进度达到最大值,关闭对话框
progress=0;
progressDialog.dismiss();
}
else{
progress++;
//将进度递增1
progressDialog.incrementProgressBy(1);
//随机设置下一次递增进度(调用handleMessage方法)的时间间隔
//第一个参数表示消息代码,第2个参数表示下一次调用handleMessage要等待的毫秒数
progressHandler.sendEmptyMessageAtTime(1,
50+new Random().nextInt(500));
}
}
};
//设置进度初始值
progress=(progress>0)?progress:0;
progressDialog.setProgress(progress);
//立即设置进度对话框中的进度值,第一个参数表示消息代码
progressHandler.sendEmptyMessage(1);
}
public void onClick(View view){
switch(view.getId()){
case R.id.button1:
//显示水平进度对话框
showProgressDialog(ProgressDialog.STYLE_HORIZONTAL);
break;
case R.id.button2:
//显示圆形进度对话框
showProgressDialog(ProgressDialog.STYLE_SPINNER);
break;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button1=(Button)findViewById(R.id.button1);
Button button2=(Button)findViewById(R.id.button2);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
}
}