上篇我们详细介绍了AlertDialog
这次介绍ProgressDialog
ProgressDialog 写了三种形式
第一种:环形进度条
private ProgressDialog pd1, pd2 ,pd3;
注意:这里是调用了静态方法, 我的理解是可以直接用类方法,但是我需要过5秒后暂停, 就用pd1的对象了, 在线程中5秒后执行dismiss()方法把pd1销毁. 效果图如下 ://调用静态方法显示环形进度条 pd1 = ProgressDialog.show(ProgressDlgActivity.this, "任务执行中", "任务执行中, 请等待", false, true); new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(5000); Log.e("xxxxx", "----> 执行"); pd1.dismiss(); } catch (InterruptedException e) { e.printStackTrace(); } } }).start();
第二种: 不显示进度的进度条
注意: 这里我们可以看出 设置进度条的重要方法是 getProgressStyle 根据不同的STYLE ,就能选择出系统给出的不同样式,效果图如下:pd2 = new ProgressDialog(this); pd2.setTitle("我是一个进度条"); pd2.setMessage("请稍等"); // 设置对话框可以用取消按钮关闭 pd2.setCancelable(true); pd2.setButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); // 设置对话框的进度条风格 <span style="color:#ff6666;">pd2.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);</span> //设置对话框的进度条是否显示进度 pd2.setIndeterminate(true); //显示控件 pd2.show(); Timer timer = new Timer(); TimerTask task = new TimerTask() { @Override public void run() { pd2.dismiss(); } }; //3秒后关闭 timer.schedule(task, 5000);
![](https://img-blog.csdn.net/20160307134255395?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
第三种: 显示进度的进度条
第三种进度条, 是要把下载的进度显示出来, 这就需要我们实时更新数据, 开辟子线程,只把值回传.<span style="font-size:18px;">private int hasData = 0; private int progressStatus = 0; final static int MAX_PROGRESS = 100; private int []data = new int[50]; private Handler handler;</span>
<span style="font-size:18px;"> </span><pre style="background-color: rgb(255, 255, 255); font-family: Monaco;"><pre name="code" class="java">pd3 = new ProgressDialog(this); pd3.setTitle("再看这个进度条 , 任务完成百分比"); pd3.setMessage("耗时任务的完成百分比"); //将进度条的完成进度设为0 progressStatus = 0; hasData = 0; pd3.setMax(MAX_PROGRESS); pd3.setCancelable(false); pd3.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); pd3.setIndeterminate(false); pd3.show();
new Thread(new Runnable() { @Override public void run() { while (progressStatus < MAX_PROGRESS){ progressStatus = MAX_PROGRESS * doWork() /data.length; handler.sendEmptyMessage(500); } if (progressStatus >= MAX_PROGRESS){ pd3.dismiss(); } } }).start();
public int doWork(){ data[hasData ++] = (int )(Math.random() * 100); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } return hasData; }
效果如下 :
我们在alertDialog中发现, 一般用 AlertDiaolg.builder这个类来实现, 实现的方法都大同小异,区别在于:根据不同的提示内容需要, 选择不同的形式, ProgressDialog也是如此, 它的重要方法就是设置style.
至此 ,常用的两种Dialog就介绍完了, 还有一种简单的日期选择提示框, 用Calendar这个类来实现,有兴趣的朋友可以看一下,非常简单 但界面做的非常好,效果图如下, 点击OK 就能获得选择的年月日,可以放到textView中显示