如何顯示文件的剩餘KB的文件將被下載在Android的進度條。 如12KB/120KB是remaining..then 97KB/120KB ...等等在android中的文件下載進度條
我們能有這樣的進度對話框,如下圖所示
如何顯示文件的剩餘KB的文件將被下載在Android的進度條。 如12KB/120KB是remaining..then 97KB/120KB ...等等在android中的文件下載進度條
我們能有這樣的進度對話框,如下圖所示
的最好方法是什麼您所描述的是使用AsyncTask執行下載。在onProgressUpdate方法中,您可以更新ProgressDialog以指示用戶完成百分比。它看起來像:
可以使用進度對話框,在該文檔中討論。另外(也許更優雅),你可以在你的活動的標題欄中使用進度指示器。然後通過調用setProgress(int)
你可以提示進度
requestWindowFeature(Window.FEATURE_PROGRESS);
:在您的活動,呼籲setContentView
之前,加入這一行。當進度達到10000時,標題欄中的進度指示器消失。請注意,如果您確定非UI線程的進度,則應該使用處理程序調用setProgress
。
class DownloadFileAsync extends AsyncTask<String, String, String> {
private ProgressDialog mProgressDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
mProgressDialog = new ProgressDialog(UrlTestActivity.this);
mProgressDialog.setMessage("Downloading file..");
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mProgressDialog.setCancelable(false);
mProgressDialog.show();
}
@Override
protected String doInBackground(String... aurl) {
int count;
try {
for (int i = 0; i < 3; i++) {
URL url = new URL("http://nodeload.github.com/nexes/Android-File-Manager/zipball/master");
URLConnection conexion = url.openConnection();
conexion.connect();
int lenghtOfFile = conexion.getContentLength();
InputStream is = url.openStream();
File testDirectory = new File(Environment.getExternalStorageDirectory() + "/Folder");
if (!testDirectory.exists()) {
testDirectory.mkdir();
}
FileOutputStream fos = new FileOutputStream(testDirectory+ "/"+(i+100)+".zip");
byte data[] = new byte[1024];
long total = 0;
int progress = 0;
while ((count = is.read(data)) != -1) {
total += count;
int progress_temp = (int) total * 100/lenghtOfFile;
publishProgress(""+ progress_temp);
if (progress_temp % 10 == 0 && progress != progress_temp) {
progress = progress_temp;
}
fos.write(data, 0, count);
}
is.close();
fos.close();
}
} catch (Exception e) {}
return null;
}
protected void onProgressUpdate(String... progress) {
Log.d("ANDRO_ASYNC",progress[0]);
mProgressDialog.setProgress(Integer.parseInt(progress[0]));
}
@Override
protected void onPostExecute(String unused) {
dismissDialog(DIALOG_DOWNLOAD_PROGRESS);
}
}
progressDialog.setMax(fileLength/1000);
publishProgress(String.valueOf(total /1000));
下面的代碼是唯一的API後可用11
progressDialog. setProgressNumberFormat ("%1d kb of %2d kb");
如何計算剩餘文件的KB的..? – Jitesh 2011-05-09 14:38:42
通常,服務器響應包含內容長度http標頭。如果沒有,那麼你無法知道總尺寸,你需要使用一個不確定的進度(只是一個沒有進度指示器的紡車)。爲此,您需要使用'requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);' – 2011-05-09 14:44:00
@ Ted-Hopp是的,我有內容長度http header ..但是我需要在窗體中顯示如我已經接近的圖像** 52kb的118kb ** – Jitesh 2011-05-09 14:53:20