安卓 ProgressBar 显示小数的方法

来源:互联网 发布:淘宝发布类目受到限制 编辑:程序博客网 时间:2024/05/17 09:08

最近项目要求下载进度提示对话框 要有单位 KB,通过查看源码 发现android框架是提供了 这样的方法的 setProgressNumberFormat()但是这个方法 貌似对版本无效比如2.3      具体代码如下

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. downloadDialog = new ProgressDialog(ctx);  
  2.             // downloadDialog.setIcon(R.drawable.ic_launcher);    
  3.             downloadDialog.setTitle("下载中请等待");    
  4.             downloadDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);  
  5.             downloadDialog.setCanceledOnTouchOutside(false);  
  6.             downloadDialog.setProgressNumberFormat("%1d kb/%2d kb");  
  7.            /* downloadDialog.setButton("确定", new DialogInterface.OnClickListener() {   
  8.                  public void onClick(DialogInterface dialog, int whichButton) {   
  9.                      //这里添加点击后的逻辑    
  10.                  }   
  11.              });*/    
  12.             downloadDialog.setButton2("取消"new DialogInterface.OnClickListener() {    
  13.                  public void onClick(DialogInterface dialog, int whichButton) {    
  14.                      errorMsg = "下载已经取消...";  
  15.                      sendMessage(DOWNLOAD_ERROR);  
  16.                  }    
  17.              });    

其中  downloadDialog.setProgressNumberFormat("%1d kb/%2d kb"); 参数 %1d kb/%2d kb的意思就是 进度填入 %1d位置 总数填入%2d 这样可以传入任意形式的格式化字符串只要有%1d和%2d 就OK。

效果图 

  

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

自定义显示格式:
progressDialog.setProgressNumberFormat("%1d kb/%2d kb"); 
当前进度填入%1d位置,总数填入%2d。
这个方法是自动填充的,只要在初始化时,加上这一句,
调用progressDialog.setMax(int )后会自动将总数填入%2d.
同理,调用progressDialog.setProgress(int )后会自动将当前进度填入%1d.

但是,从setMax,setProgress的输入参数可知这2个方法只接收整数。
如果进度显示的样式只要求为整数形式,那么在初始化时,定义一次
progressDialog.setProgressNumberFormat("%1d kb/%2d kb"); 就可以了。

那要如何显示小数呢? 很简单,既然setProgressNumberFormat()能显示自定义的"/","kb",
这些字符,那么就能显示我们需要的自定义字符串。所以,干脆就让这个方法不接收前面
说的当前进度%1d,和总数%2d,而是直接显示我们需要的处理好的字符串即可:
(文件大小fileLength,已下载大小downLength)
初始化时: progressDialog.setMax(fileLength);
每一次刷新下载进度时:
progressDialog.setProgress(downLength);
float all = fileLength/1024/1024;
float percent = downLength/1024/1024;
progressDialog.setProgressNumberFormat(String.format("%.2fM/%.2fM", percent, all));

注意:setProgressNumberFormat这个方法要求版本最小为 android:minSdkVersion="11"


0 0
原创粉丝点击