下载时显示进度条

时间:2013-12-20 02:59:28

标签: android progress-bar

我想显示一个进度条,显示我的应用通过互联网下载一些大文件时完成的百分比。 像这样:enter image description here

4 个答案:

答案 0 :(得分:3)

您可以通过两种方式使用进度条来实现此目的。

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

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

您可以将AsyncTask用于此

请参阅此link

2.添加进度条(矩形栏类型)以显示下载进度或可能的内容。

我建议你仔细阅读link ..

答案 1 :(得分:2)

答案 2 :(得分:2)

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秒获得一次进度增量。

答案 3 :(得分:0)

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

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

doInBackground()

他们是

  

preExecute和postExecute

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