package com.spring.sky.download;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.Toast;
/**
* 文件下载界面
* @author spring sky
* Email:vipa1888@163.com
* QQ:840950105
* name:石明政
*
*/
public class IndexActivity extends Activity implements OnClickListener{
private static final int DOWNLOAD_PREPARE = 0;
private static final int DOWNLOAD_WORK = 1;
private static final int DOWNLOAD_OK = 2;
private static final int DOWNLOAD_ERROR =3;
private static final String TAG = "IndexActivity";
private Button bt ;
private ProgressBar pb;
private ImageView img;
/**
* 需要下载的文件
* 注意:在模拟器上面使用无法解析有域名的主机
*/
private String url = "http://61.155.165.32/shuixiyue/pic/item/f141247490d0e96fb251b963.jpg";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bt = (Button) this.findViewById(R.id.bt);
bt.setOnClickListener(this);
pb = (ProgressBar) this.findViewById(R.id.pb);
pb.setVisibility(ProgressBar.INVISIBLE);
img =(ImageView) this.findViewById(R.id.img);
}
/**
* 按钮点击事件
*/
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt:
Toast.makeText(this, "开始下载文件", Toast.LENGTH_SHORT).show();
new Thread(){
@Override
public void run() {
downloadFile();
super.run();
}
}.start();
break;
}
}
/**
* 文件下载
*/
private void downloadFile()
{
try {
URL u = new URL(url);
URLConnection conn = u.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
fileSize = conn.getContentLength();
if(fileSize<1||is==null)
{
sendMessage(DOWNLOAD_ERROR);
}else{
sendMessage(DOWNLOAD_PREPARE);
FileOutputStream fos = new FileOutputStream(getPath());
byte[] bytes = new byte[1024];
int len = -1;
while((len = is.read(bytes))!=-1)
{
fos.write(bytes, 0, len);
downloadSize+=len;
sendMessage(DOWNLOAD_WORK);
}
sendMessage(DOWNLOAD_OK);
is.close();
fos.close();
}
} catch (Exception e) {
sendMessage(DOWNLOAD_ERROR);
e.printStackTrace();
}
}
/**
* 文件一共的大小
*/
int fileSize = 0;
/**
* 已经下载的大小
*/
int downloadSize = 0;
/**
* handler处理消息
*/
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case DOWNLOAD_PREPARE:
Toast.makeText(IndexActivity.this, "下载准备", Toast.LENGTH_SHORT).show();
pb.setVisibility(ProgressBar.VISIBLE);
Log.e(TAG, "一共:"+fileSize);
pb.setMax(fileSize);
break;
case DOWNLOAD_WORK:
Log.e(TAG, "已下载:"+downloadSize);
pb.setProgress(downloadSize);
int res = downloadSize*100/fileSize;
bt.setText("已下载:"+res+"%");
break;
case DOWNLOAD_OK:
try {
if(getPath().endsWith(".jpg")||getPath().endsWith(".png")){
FileInputStream fis = new FileInputStream(getPath());
img.setImageBitmap(BitmapFactory.decodeStream(fis));
}
downloadSize = 0;
fileSize = 0;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Toast.makeText(IndexActivity.this, "下载完成", Toast.LENGTH_SHORT).show();
break;
case DOWNLOAD_ERROR:
Toast.makeText(IndexActivity.this, "下载出错", Toast.LENGTH_SHORT).show();
break;
}
super.handleMessage(msg);
}
};
/**
* 得到文件的保存路径
* @return
* @throws IOException
*/
private String getPath() throws IOException
{
String path = FileUtil.setMkdir(this)+File.separator+url.substring(url.lastIndexOf("/")+1);
return path;
}
/**
* 给hand发送消息
* @param what
*/
private void sendMessage(int what)
{
Message m = new Message();
m.what = what;
handler.sendMessage(m);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
android有进度条的下载文件
共30个文件
class:10个
png:6个
xml:3个
5星 · 超过95%的资源 需积分: 9 28 下载量 60 浏览量
2012-01-19
17:15:23
上传
评论
收藏 65KB RAR 举报
温馨提示
android有进度条的下载文件 如果有什么问题,可以联系我 Email:vipa1888@163.com QQ :840950105
资源推荐
资源详情
资源评论
收起资源包目录
downloadFile.rar (30个子文件)
downloadFile
bin
classes.dex 13KB
res
drawable-ldpi
ic_launcher.png 2KB
drawable-hdpi
ic_launcher.png 4KB
drawable-mdpi
ic_launcher.png 2KB
downloadFile.apk 19KB
classes
com
spring
sky
download
IndexActivity$1.class 3KB
IndexActivity.class 5KB
R$layout.class 409B
FileUtil.class 2KB
R$id.class 448B
R$drawable.class 422B
R$attr.class 355B
R.class 566B
IndexActivity$2.class 694B
R$string.class 442B
resources.ap_ 11KB
res
drawable-ldpi
ic_launcher.png 2KB
drawable-hdpi
ic_launcher.png 4KB
values
strings.xml 168B
drawable-mdpi
ic_launcher.png 3KB
layout
main.xml 769B
assets
gen
com
spring
sky
download
R.java 840B
proguard.cfg 1KB
.settings
org.eclipse.core.resources.prefs 88B
src
com
spring
sky
download
IndexActivity.java 5KB
FileUtil.java 1KB
.project 848B
.classpath 364B
project.properties 360B
AndroidManifest.xml 970B
共 30 条
- 1
资源评论
- liangp34992012-12-26不错,有很多功能可以参考,3Q
- leidetianshiyj2012-09-26虽然很简单,但是功能全实现了
- anny11112013-01-05很不错,参照这个,我自己自定义了个进度条,有所改进,正适用。。。
- aboluo4442012-12-05不错的资源,很简单清晰。
spring_sky_
- 粉丝: 259
- 资源: 31
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功