ProgressDialog如何设置进度值为小数

时间:2022-09-15 10:49:18
ProgressDialog的方法setMax和setProgress所带参数只能是int型,有没有什么办法将其设置为float或double型的吗?

13 个解决方案

#1


有什么意义呢?

#2


float/double,乘以一定的系数,转成int。

#3


有啊,就是我在下载资源的时候,比如apk安装文件,然后要在进度下显示spk文件的大小。
引用 1 楼  的回复:
有什么意义呢?

#4


我不是要设置为int,我是想要让其显示float型的。
引用 2 楼  的回复:
float/double,乘以一定的系数,转成int。

#5


楼主太在意了 没事的,apk大小咱们都是用XXXXbit表示的吧,难道你想用XX.XXM or XX.XX KB 表示吗?? 假设你的apk 1M大小  那就1024KB 或者1024*1024 bit 大小呗 ,不需要小数的,没意义!!

#6


是啊,我就想想用XX.XXM 表示,但是不知道有没有方法解决,setProgress只能设置一个int的,后面的单位也不知道如何表示出来,1M用bit表示那不是有好长一串,看着不舒服。

#7


float res = (float) (downloadSize * 100.0 / fileSize); //得到现在的float进度
res = (float)(Math.round(res*100))/100;//将float转换为两位小数。
tv.setText("已下载:" + res + "%");//显示出来 


我是这样做的额

#8


不知道你能不能把文件的大小,和已下载的文件大小传过来
这样即可以显示已下载多少,用已下载的除以总大小也能算出来进度

#9


7楼是自己定义了个布局文件吧。我是直接在new出来的ProgressDialog,不知道这样可不可以显示小数。你用TextView貌似可以这样做。

#10


嗯,这些我都能够得到,我就是这样做的,关键是我是在代码中直接new出来个ProgressDialog,然后想setProgress的时候有木有办法设置为小数。而setProgress只能设置为int,不知道这样解释明不明白我的意思。
引用 8 楼  的回复:
不知道你能不能把文件的大小,和已下载的文件大小传过来
这样即可以显示已下载多少,用已下载的除以总大小也能算出来进度

#11


自定义显示格式:
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"

#12


自定义显示格式:
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"

#13


当然。 自定义一个ProgressDialog也是一个很不错的方法。

#1


有什么意义呢?

#2


float/double,乘以一定的系数,转成int。

#3


有啊,就是我在下载资源的时候,比如apk安装文件,然后要在进度下显示spk文件的大小。
引用 1 楼  的回复:
有什么意义呢?

#4


我不是要设置为int,我是想要让其显示float型的。
引用 2 楼  的回复:
float/double,乘以一定的系数,转成int。

#5


楼主太在意了 没事的,apk大小咱们都是用XXXXbit表示的吧,难道你想用XX.XXM or XX.XX KB 表示吗?? 假设你的apk 1M大小  那就1024KB 或者1024*1024 bit 大小呗 ,不需要小数的,没意义!!

#6


是啊,我就想想用XX.XXM 表示,但是不知道有没有方法解决,setProgress只能设置一个int的,后面的单位也不知道如何表示出来,1M用bit表示那不是有好长一串,看着不舒服。

#7


float res = (float) (downloadSize * 100.0 / fileSize); //得到现在的float进度
res = (float)(Math.round(res*100))/100;//将float转换为两位小数。
tv.setText("已下载:" + res + "%");//显示出来 


我是这样做的额

#8


不知道你能不能把文件的大小,和已下载的文件大小传过来
这样即可以显示已下载多少,用已下载的除以总大小也能算出来进度

#9


7楼是自己定义了个布局文件吧。我是直接在new出来的ProgressDialog,不知道这样可不可以显示小数。你用TextView貌似可以这样做。

#10


嗯,这些我都能够得到,我就是这样做的,关键是我是在代码中直接new出来个ProgressDialog,然后想setProgress的时候有木有办法设置为小数。而setProgress只能设置为int,不知道这样解释明不明白我的意思。
引用 8 楼  的回复:
不知道你能不能把文件的大小,和已下载的文件大小传过来
这样即可以显示已下载多少,用已下载的除以总大小也能算出来进度

#11


自定义显示格式:
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"

#12


自定义显示格式:
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"

#13


当然。 自定义一个ProgressDialog也是一个很不错的方法。