【问题标题】:Set progressbar to KB and MB instead of % for android download manager将进度条设置为 KB 和 MB,而不是 Android 下载管理器的 %
【发布时间】:2016-03-10 13:41:50
【问题描述】:

我正在尝试从 url 下载图像,我需要显示文件的大小和文件下载的进度。

这就是我所拥有的。

 int bytes_downloaded = cursor.getInt(cursor
                        .getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR));
                int bytes_total = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES));

 final int dl_progress = (int) ((bytes_downloaded * 100l) / bytes_total);
                runOnUiThread(new Runnable() {

                    @Override
                    public void run() {
                        getFileSize(fileSizeInKB);
                        mProgressDialog.setProgress((int) dl_progress);

                    }
  });

As of now its showing %(ie..10/100)

如果我将其设置为 mProgressDialog.setProgressNumberFormat("%1d kb / %2d kB") 它显示为 1kb of 100kb 但无法获取我正在尝试下载的文件的实际大小

我需要它显示为 1.2MB/3.6MB

问题是进度显示低于 60/100,但我不希望这样

【问题讨论】:

  • 你说的是什么意思,但无法获得我要下载的文件的实际大小,?
  • @Blackbelt- 无法理解如何在进度条中显示文件的实际大小而不是 %
  • 你检查过是否设置了 content-length 吗?
  • 到底是什么问题?
  • 好的。所以你的最大进步是bytes_total,不是吗?

标签: android progress-bar progressdialog filesize


【解决方案1】:

终于成功了:

这里是方法

long  downloadedsize, filesize;
public static final double SPACE_KB = 1024;
public static final double SPACE_MB = 1024 * SPACE_KB;
public static final double SPACE_GB = 1024 * SPACE_MB;
public static final double SPACE_TB = 1024 * SPACE_GB;

并将其设置为进度条

mProgressDialog.setProgressNumberFormat((bytes2String(downloadedsize)) + "/" + (bytes2String(filesize)));

方法:字节转字符串

public static String bytes2String(long sizeInBytes) {

        NumberFormat nf = new DecimalFormat();
        nf.setMaximumFractionDigits(2);

        try {
            if ( sizeInBytes < SPACE_KB ) {
                return nf.format(sizeInBytes) + " Byte(s)";
            } else if ( sizeInBytes < SPACE_MB ) {
                return nf.format(sizeInBytes/SPACE_KB) + " KB";
            } else if ( sizeInBytes < SPACE_GB ) {
                return nf.format(sizeInBytes/SPACE_MB) + " MB";
            } else if ( sizeInBytes < SPACE_TB ) {
                return nf.format(sizeInBytes/SPACE_GB) + " GB";
            } else {
                return nf.format(sizeInBytes/SPACE_TB) + " TB";
            }
        } catch (Exception e) {
            return sizeInBytes + " Byte(s)";
        }

  }

【讨论】:

  • 如何找到 totallengthOfFile 的大小
  • @Gowthaman M 看到这个:androiddeft.com/…。有点晚了,但放在这里总是好的。
猜你喜欢
  • 2016-08-05
  • 2014-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-12
  • 1970-01-01
相关资源
最近更新 更多