显示下载进度条

5
我希望能在我的应用程序下载一些大文件时展示一个进度条,显示完成的百分比,就像这样:enter image description here

这是定制的。 - Chintan Soni
你做了这个吗,@Hieu le? - Manu
4个回答

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"
        />

你可以根据你的需求更改进度条的样式。
这是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秒钟获得进度增量。

感谢您的帮助。 - Hieu Le

3
你可以通过两种方式使用进度条来实现此目的。
1.添加一个进度条(圆形)作为加载指示器。
要做到这一点,只需在图片下载线程开始时显示进度条progressbar.show();。在下载完成后取消进度条progressbar.dismiss();
你可以使用AsyncTask实现这个功能。
参考这个链接: link 2.添加一个进度条(矩形条形)以显示下载进度或其他任何进度。
我建议你阅读这个链接: link.

2

ProgressDialog自API Level O起已被弃用。https://developer.android.com/reference/android/app/ProgressDialog.html - Dika

0

你应该使用进度条。

我假设你正在使用Asynctask来下载文件,如果你没有使用,我建议你使用它。

Async task除了

doInBackground()

还有两个很酷的方法

preExecute和postExecute

你可以重写这些方法,现在创建一个简单的进度条,在preExecute方法中启动它,在postExecute方法中结束它。

这里是工作LINK


谢谢你的帮助。 - Hieu Le

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接