在网上看啦一些,自己有修改了一下,主要方法 如下
下载类
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进度条,方便你的使用............................................................................................
自定义AsynTask实现在子线程中加载图片,并将下载进度通过ProgressDialog显示,然后加载到ImageView上。
实现文件的复制 及 进度条的显示 progressdialog
2个按钮,左边为ProgressBar事件,点击后隐藏/显示 ProgressBar ;右边为ProgressDialog事件,实现点击后弹出ProgressDialog,并在3s(耗时操作)后消失
Android中自定义ProgressDialog实现加载滚动条效果,例如显示“请稍后……”,希望对于有帮助
本源码主要是演示在Android中使用ProgressDialog,定义了两种常用的ProgressDialog进度对话框,一种是长形进度条,这是最早时候的进度条,有点像windows 7风格,另外上一种是圆形的进度条,这种进度条风格在目前的...
本文实例讲述了Android开发中ProgressDialog简单用法。分享给大家供大家参考,具体如下: 网上一般对进度条的示例都是如何显示,没有在任务结束如何关闭的文章,参考其他文章经过试验之后把整套进度条显示的简单示例...
显示progressDialog的类: import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnCancelListener; public ...
ProgressDialog 继承自AlertDialog,AlertDialog继承自Dialog,实现DialogInterface接口。...// 方式二:使用静态方式创建并显示,这种进度条只能是圆形条,设置title和Message提示内容 ProgressDialog dia
NULL 博文链接:https://justwyy.iteye.com/blog/1494054
android网络加载显示进度条 ProgressDialog+Thread应用
为了提高用户体验,我们肯定希望该Dialog能更加炫酷,让用户看着更舒服。...//加载显示的信息 mDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);//圆环风格 mDialog.show(); 二、更换系统加载图片 mDialog
主要介绍了Android ProgressDialog用法之实现app上传文件进度条转圈效果,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
4.2.22 对话框中的进度条(ProgressDialog) 4.3 界面布局 4.3.1 垂直线性布局 4.3.2 水平线性布局 4.3.3.相对布局(RelativeLayout) 4.3.4 表单布局(TableLayout) 4.3.5 切换卡(TabWidget) 4,4 小结 第5章 Android...
本文实例讲述了Android开发之ProgressDialog进度对话框用法。分享给大家供大家参考,具体如下: 使用方法: 如果只是普通进度对话框 直接调用ProgressDialog静态方法 show() 即可 创建ProgressDialog 调用方法...
主要介绍了详解Android中提示对话框(ProgressDialog和DatePickerDialog和TimePickerDialog&PopupWindow)的相关资料,需要的朋友可以参考下
有时候,我们完全可以把UI甚至数据处理都交给WebView,配合PHP...程序功能介绍:打开网页同时显示一个ProgressDialog,网页载入完毕则隐藏,点击页面上链接时再次显示ProgressDialog,载入完隐藏,可用返回键返回上一页。
android开发中WebView的使用 ...有时候,我们完全可以把UI甚至...程序功能介绍:打开网页同时显示一个ProgressDialog,网页载入完毕则隐藏,点击页面上链接时再次显示ProgressDialog,载入完隐藏,可用返回键返回上一页。