下载时显示进度条

Hie*_* Le 5 android progress-bar

我想显示一个进度条,显示我的应用程序通过互联网下载一些大文件时完成的百分比.这样的事情:在此输入图像描述

dip*_*ali 3

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"
        />
Run Code Online (Sandbox Code Playgroud)

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

这是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);
            }
        }
Run Code Online (Sandbox Code Playgroud)

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