`

android 下载 并显示 progressDialog

阅读更多
在网上看啦一些,自己有修改了一下,主要方法 如下
下载类
package com.example.anrdroidlancher.util;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.content.Context;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.widget.Toast;

/**
 * 下载apk
 * 
 * @author qishoudong
 * @2012-10-11
 */
public class LoadingUtile {

	public Context context;
	public Handler handler;
	/**
	 * 文件一共的大小
	 */
	public static  int fileSize = 0;
	/**
	 * 已经下载的大小
	 */
	public int downloadSize = 0;
	public static int loading_size;
	public static final int DOWNLOAD_PREPARE = 0;
	public static final int DOWNLOAD_WORK = 1;
	public static final int DOWNLOAD_OK = 2;
	public static final int DOWNLOAD_ERROR = 3;

	public LoadingUtile(Context context) {
		this.context = context;
	}

	public LoadingUtile(Context context, Handler handler) {
		this.context = context;
		this.handler = handler;
	}

	public final static String loadingFile = "thtf_apk";
	public static String FILEPATH = null;

	public File downLoadFile(String httpUrl) throws Exception {
		String[] tempStr = httpUrl.split(".");
		final String fileName = "ebank.apk";
		FileHelper fileHelper = new FileHelper(context);
		FILEPATH = fileHelper.sysPath(context) + loadingFile;
		File tmpFile = new File(FILEPATH);
		if (!tmpFile.exists()) {
			tmpFile.mkdir();
		}
		final File file = new File(FILEPATH + "/" + fileName);
		try {
			URL url = new URL(httpUrl);
			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
			InputStream is = conn.getInputStream();
			FileOutputStream fos = new FileOutputStream(file);
			byte[] buf = new byte[256];
			conn.connect();
			fileSize=conn.getContentLength();
			if (fileSize < 1 || is == null) {
				sendMessage(DOWNLOAD_ERROR);
			} else {
				sendMessage(DOWNLOAD_PREPARE);
				byte[] bytes = new byte[1024];
				int len = -1;
				while ((len = is.read(bytes)) != -1) {
					fos.write(bytes, 0, len);
					downloadSize += len;
					loading_size=downloadSize;
					sendMessage(DOWNLOAD_WORK);
				}
				sendMessage(DOWNLOAD_OK);
			}
			conn.disconnect();
			fos.close();
			is.close();
		} catch (IOException e) {
			sendMessage(DOWNLOAD_ERROR);
			e.printStackTrace();
		}
		return file;
	}

	/**
	 * 给hand发送消息
	 * 
	 * @param what
	 */
	private void sendMessage(int what) {
		Message m = new Message();
		m.what = what;
		handler.sendMessage(m);
	}

}


progressDialog  handler 事件 
	/**
	 * handle
	 */
	 Handler handler = new Handler() {
		@Override
		public void handleMessage(Message msg) {// handler接收到消息后就会执行此方法
			switch (msg.what) {
			case LoadingUtile.DOWNLOAD_ERROR:
				progressDialog.setMessage("下载出错");
				progressDialog.dismiss();
				break;
			case LoadingUtile.DOWNLOAD_PREPARE:
//				progressDialog.setMax(LoadingUtile.fileSize);
				break;
			case LoadingUtile.DOWNLOAD_WORK:
				int res = LoadingUtile.loading_size * 100 / LoadingUtile.fileSize;
//				progressDialog.setMessage("已经下载  "+res+"%");
				progressDialog.setProgress(res);
				break;
			case LoadingUtile.DOWNLOAD_OK:
				progressDialog.dismiss();// 关闭ProgressDialog
				openFile(file);
				break;
			default:
				progressDialog.dismiss();// 关闭ProgressDialog
				break;
			}
		}
	};

分享到:
评论

相关推荐

    android 自定义组合progressdialog进度条

    android 自定义组合progressdialog进度条,方便你的使用............................................................................................

    android ProgressDialog 自定义样式

    在Android开发中,ProgressDialog是一个非常常见的组件,用于在应用程序执行耗时操作时向用户显示进度。然而,系统默认的ProgressDialog样式可能无法满足所有设计需求,因此开发者常常需要对其进行自定义,以实现更...

    android 自定义ProgressDialog对话框

    在Android开发中,ProgressDialog是一种常见的UI组件,用于在执行耗时操作时向用户显示进度,以提供更好的用户体验。默认的ProgressDialog通常包含一个圆形进度条,但有时为了满足特定的界面设计或功能需求,开发者...

    android关于ProgressBar和ProgressDialog的使用

    在Android开发中,ProgressBar和ProgressDialog是两种常用的进度条控件,用于展示应用程序执行的后台任务或数据加载状态。本文将详细讲解如何在Android应用中使用这两种控件。 首先,我们来了解一下`ProgressBar`。...

    AsynTask+ProgressDialog子线程下载图片并显示进度然后显示

    本篇文章将详细讲解如何利用AsynTask和ProgressDialog实现在子线程中下载图片,实时更新进度,并最终显示在ImageView上。 首先,我们需要了解Android的线程模型。主线程,也称为UI线程,负责处理用户界面的所有操作...

    文件复制及进度条 android 文件复制 进度条 progressdialog

    在Android开发中,文件复制和进度条的显示是常见的需求,尤其在移动应用中,用户可能需要将数据从一个位置移动到另一个位置,或者在后台下载文件时展示进度。`ProgressDialog`是Android SDK提供的一种对话框组件,...

    Android中自定义ProgressDialog实现加载滚动条效果,例如显示“请稍后……”

    在Android开发中,ProgressDialog是一种常用的UI组件,用于在执行耗时操作时向用户展示进度或提示信息,如“请稍后……”。为了提供更个性化的用户体验,开发者有时需要自定义ProgressDialog,比如添加滚动条效果。...

    Android 自定义ProgressDialog实例

    在Android开发中,...在"Android 自定义ProgressDialog实例"中,提供的`CustomWaitDialog`可能就是这样一个具体的实现案例,你可以下载并研究其源代码,以获取更多关于自定义ProgressDialog的灵感和技巧。

    android中ProgressDialog的使用

    在Android开发中,ProgressDialog是一个非常常用的组件,它用于在...综上所述,理解并熟练运用ProgressDialog是Android开发中的基本技能,同时也需要关注Android设计指南的变化,以便提供更现代、更友好的用户体验。

    Android 自带progressDialog的使用

    如果操作很快完成,或者用户可以同时执行其他任务,那么可能不需要显示ProgressDialog。 通过以上步骤,你就能在Android应用中熟练地使用ProgressDialog了。但随着Android版本的更新,开发者应持续关注最佳实践和新...

    Android_UI_ProgressDialog

    通常,这样的示例会展示如何在按钮点击事件中启动一个后台线程,执行耗时操作,并在该操作进行时显示ProgressDialog。例如: ```java Button button = findViewById(R.id.button); button.setOnClickListener(new ...

    Android自定义类似ProgressDialog效果的Dialog

    在Android开发中,Dialog是一种非常重要的组件,它用于在用户界面中显示临时信息或与用户进行交互。系统自带的ProgressDialog通常用于表示一个操作正在进行,但它的样式和功能可能无法满足所有设计需求。为了提供更...

    Android自定义ProgressDialog

    - 在主线程中创建和显示ProgressDialog,因为它涉及到UI操作。 - 避免阻塞主线程,耗时操作应放在子线程中执行。 - 当ProgressDialog不再需要时,记得及时调用`dismiss()`,防止内存泄漏。 通过以上步骤,开发者...

    Android 自定义progressDialog实现

    `ProgressDialog`是Android SDK中的一个类,它继承自`AlertDialog`,通常用于显示一个带有进度条的对话框,可以是水平的或旋转的。默认样式可能无法满足所有设计要求,因此自定义成为必然。 要实现自定义`...

    android中透明Dialog及ProgressDialog的实现

    接下来,在代码中实例化并显示ProgressDialog: ```java ProgressDialog progressDialog = new ProgressDialog(this, R.style.Theme_AppCompat_Translucent); progressDialog.setContentView(R.layout.progress_...

    ProgressDialog_android源码_

    1. `show()`: 显示ProgressDialog。 2. `dismiss()`: 隐藏或取消ProgressDialog。 3. `incrementProgressBy(int increment)`: 增加进度条的值。 4. `setMessage(CharSequence message)`: 设置进度条下方的文字信息。...

    android 对话框中的进度条 (ProgressDialog)

    在Android开发中,ProgressDialog是一个非常常见的组件,它用于在执行耗时操作时向用户展示一个对话框,通常显示一个进度条来表示任务的进度。这个组件对于提升用户体验至关重要,因为它可以告知用户应用正在进行...

    Android ProgressDialog进度条对话框.rar

    在Android开发中,ProgressDialog是一个非常常见的组件,它用于在用户执行长时间操作时显示一个带有进度指示的对话框,以提供用户反馈并防止他们误操作。这个"Android ProgressDialog进度条对话框.rar"压缩包可能...

Global site tag (gtag.js) - Google Analytics