【问题标题】:Show Progress bar while downloading下载时显示进度条
【发布时间】:2013-12-20 02:59:27
【问题描述】:

当我的应用通过 Internet 下载一些大文件时,我想显示一个进度条来显示完成百分比。 像这样:

【问题讨论】:

  • 这是定制的。
  • 你做了这个@Hieu le

标签: android progress-bar


【解决方案1】:

xml文件代码:

 <ProgressBar
        android:id="@+id/xml_reg_progressBar"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="@dimen/common_left_right_margin"
        android:layout_marginRight="@dimen/common_left_right_margin"
        android:layout_marginTop="@dimen/reg_ph_linear_top_margin"
        />

您可以根据需要更改进度条样式。

这是java文件代码:

 protected static final int TIMER_RUNTIME = 180000; // in ms --> 10s
    private ProgressBar progressTimer;
    public void startTimer() {
            final Thread timerThread = new Thread() {
                @Override
                public void run() {
                    mbActive = true;
                    try {
                        int waited = 0;
                        while (mbActive && (waited < TIMER_RUNTIME)) {
                            sleep(1000);
                            if (mbActive) {
                                waited += 1000;

                                updateProgress(waited);
                            }
                        }
                    } catch (InterruptedException e) {
                        // do nothing
                    } finally {
                        onContinue();
                    }
                }

            };
            timerThread.start();

        }

        Handler handler = new Handler();

        private void onContinue() {
            handler.post(new Runnable() {
                @Override
                public void run() {

                    txtCallContactUsNumber
                            .setText(CommonVariable.CallForSupporMessage
                                    + contactInfo.MobileNo);

                }
            });

        }

        public void updateProgress(final int timePassed) {
            if (null != progressTimer) {
                // Ignore rounding error here
                final int progress = progressTimer.getMax() * timePassed
                        / TIMER_RUNTIME;
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        Log.i("timePassed", "timePassed=" + timePassed);

                        DateFormat formatter = new SimpleDateFormat("mm:ss");
                        Calendar calendar = Calendar.getInstance();
                        calendar.setTimeInMillis(timePassed);
                        String timer = formatter.format(calendar.getTime());
                        formatter.setTimeZone(java.util.TimeZone.getTimeZone("GMT"));
                        txtTimerCount.setText(formatter.format(timePassed));
                    }
                });

                progressTimer.setProgress(progress);
            }
        }

在我的代码中,这将调用 1 秒并每 1 秒获得一次进度增量。

【讨论】:

  • 感谢您的帮助。
【解决方案2】:

您可以通过两种方式使用进度条来实现这一点。

1.添加进度条(圆圈一)作为加载指示器。

要做到这一点,在图像下载线程progressbar.show();开始时显示一个进度条 下载完成后关闭进度条progressbar.dismiss();

您可以为此使用 AsyncTask

参考这个link

2.添加进度条(矩形条类型)以显示下载进度或可能是什么。

我会建议你通过这个link..

【讨论】:

    【解决方案3】:

    【讨论】:

    【解决方案4】:

    您应该使用进度条。 我假设您正在使用 Asynctask 下载文件,如果您不是,那么我建议您这样做。 除了

    之外,异步任务还有两个更酷的方法

    doInBackground()

    他们是

    preExecute 和 postExecute

    您可以覆盖这些方法,现在创建一个简单的进度条并在 preExecute 方法中启动它并在 postExecute 方法中结束它。 这是工作的LINK

    【讨论】:

    • 感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2021-10-26
    • 2017-04-19
    • 2016-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多