我想显示一个进度条,显示我的应用通过互联网下载一些大文件时完成的百分比。 像这样:
答案 0 :(得分:3)
您可以通过两种方式使用进度条来实现此目的。
1.添加进度条(圆圈一条)作为加载指示器。
要做到这一点,请在启动图像下载线程progressbar.show();
时显示进度条。
下载完成后,请关闭进度条progressbar.dismiss();
您可以将AsyncTask用于此
请参阅此link
2.添加进度条(矩形栏类型)以显示下载进度或可能的内容。
我建议你仔细阅读link ..
答案 1 :(得分:2)
检查以下链接:
http://examples.javacodegeeks.com/android/core/ui/progressdialog/android-progressdialog-example/
显然,解释了如何实施ProgressBar
或ProgressDialog
这是一个用于自定义ProgressDialog的好库:
答案 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