ProgressDialog

系统封装好的进度条弹窗

基本使用

1
2
3
4
5
6
7
8
9
ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setTitle("标题");//标题
progressDialog.setIcon(R.mipmap.ic_launcher);//标题左侧图标
progressDialog.setMessage("文本");//内容
progressDialog.setCancelable(true);//可以按返回键取消
progressDialog.setCanceledOnTouchOutside(true);//可以点击空白取消
progressDialog.setOnDismissListener(null);//隐藏事件
progressDialog.setOnCancelListener(null);//取消事件
progressDialog.show();//显示

或者简单的写法:

1
ProgressDialog progressDialog = ProgressDialog.show(this, "标题", "内容");

进度条

样式

1
2
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//水平
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);//环形

水平进度条

  • 进度

    1
    2
    3
    4
    5
    6
    7
    8
    9
    //进度图片
    progressDialog.setProgressDrawable(getResources().getDrawable(R.mipmap.ic_launcher));
    //最大进度
    progressDialog.setMax(120);
    progressDialog.getMax();
    //设置进度,在show()之后调用
    progressDialog.setProgress(50);//设置的是max的多少份
    progressDialog.getProgress();
    //50/120=42%
  • 次要进度

    比如下载或者视频的缓存

    颜色比进度要浅一点

    1
    2
    progressDialog.setSecondaryProgress(80);
    progressDialog.getSecondaryProgress();
  • 进度增长设置

    1
    2
    3
    //实际进度加10
    progressDialog.incrementProgressBy(10);
    progressDialog.incrementSecondaryProgressBy(10);
  • 不确定状态进度条

    其实就不显示具体的进度,而是暂时一个加载的动画

    常用于一些耗时操作

    注意:设置进度是不起作用的,永远是0

    1
    2
    3
    4
    5
    6
    //开启
    progressDialog.setIndeterminate(true);
    //判断
    progressDialog.isIndeterminate();
    //不确定进度的图片
    progressDialog.setIndeterminateDrawable(getResources().getDrawable(R.mipmap.ic_launcher));
  • 格式化进度数字

    1
    2
    3
    4
    5
    6
    7
    //%1d: 当前进度百分比
    //%2d: 最大进度百分比
    //设置进度比的格式
    progressDialog.setProgressNumberFormat("%1dkb/%2dkb");
    // getCurrencyInstance 是一个货币格式化的方法
    //设置进度格式
    dialog.setProgressPercentFormat(NumberFormat.getCurrencyInstance());