Android原生的ProgressBar的ProgressDialog.STYLE_HORIZONTAL(即水平樣式)默認setMax和setProgress只能傳int型的參數,而實際項目中我需要顯示小數類型的參數,那么該如何設置呢?
項目需求:應用版本更新的時下載最新的apk文件需要顯示一個progressBar,在這個控件中需要有下載百分比提示和已下載/全部提示,並且最好顯示成2.33Mb/18.44Mb這樣的格式,具體操作如下:
方法一:(這個方法是在下載中添加后綴)
progressDialog.setProgressNumberFormat("%1d kb/%2d kb");
當前進度填入%1d位置,總數填入%2d。
這個方法是自動填充的,只要在初始化時,加上這一句,
調用progressDialog.setMax(int )后會自動將總數填入%2d.
同理,調用progressDialog.setProgress(int )后會自動將當前進度填入%1d
方法二:(這個方法是自定義下載進度的樣式)
很簡單,既然setProgressNumberFormat()能顯示自定義的"/","kb",
這些字符,那么就能顯示我們需要的自定義字符串。所以,干脆就讓這個方法不接收前面
說的當前進度%1d,和總數%2d,而是直接顯示我們需要的處理好的字符串即可:
(文件大小fileLength,已下載大小downLength)
初始化時: progressDialog.setMax(fileLength);
每一次刷新下載進度時:
progressDialog.setProgress(downLength);
float all = fileLength*1.0f/1024/1024;
float percent = downLength*1.0f/1024/1024;
progressDialog.setProgressNumberFormat(String.format("%.2fM/%.2fM", percent, all));
最終顯示效果:
注意:setProgressNumberFormat這個方法要求版本最小為 android:minSdkVersion="11"
原博客地址:http://blog.csdn.net/u013394527/article/details/42027857 感謝大神們的分享!!!