Android中的对话框(二)ProgressDialog

上篇我们详细介绍了AlertDialog 

这次介绍ProgressDialog

ProgressDialog 写了三种形式 

第一种:环形进度条

private ProgressDialog pd1, pd2 ,pd3;
//调用静态方法显示环形进度条
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();
注意:这里是调用了静态方法, 我的理解是可以直接用类方法,但是我需要过5秒后暂停, 就用pd1的对象了, 在线程中5秒后执行dismiss()方法把pd1销毁. 效果图如下 :



第二种: 不显示进度的进度条

   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);
注意: 这里我们可以看出 设置进度条的重要方法是 getProgressStyle 根据不同的STYLE ,就能选择出系统给出的不同样式,效果图如下:
 
第三种: 显示进度的进度条

第三种进度条, 是要把下载的进度显示出来, 这就需要我们实时更新数据, 开辟子线程,只把值回传.
<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中显示

 
 
 
 
 
 

                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值