main.xml:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/tv" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" /> <ProgressBar android:id="@+id/down_pb" android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="100" style="?android:attr/progressBarStyleHorizontal" mce_style="?android:attr/progressBarStyleHorizontal" /> </LinearLayout>

main.java:

package com.pocketdigi.download; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import org.apache.http.client.ClientProtocolException; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; public class main extends Activity { /** Called when the activity is first created. */ ProgressBar pb; TextView tv; int fileSize; int downLoadFileSize; String fileEx,fileNa,filename; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) {//定义一个Handler,用于处理下载线程与UI间通讯 if (!Thread.currentThread().isInterrupted()) { switch (msg.what) { case 0: pb.setMax(fileSize); case 1: pb.setProgress(downLoadFileSize); int result = downLoadFileSize * 100 / fileSize; tv.setText(result + "%"); break; case 2: Toast.makeText(main.this, "文件下载完成", 1).show(); break; case -1: String error = msg.getData().getString("error"); Toast.makeText(main.this, error, 1).show(); break; } } super.handleMessage(msg); } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); pb=(ProgressBar)findViewById(R.id.down_pb); tv=(TextView)findViewById(R.id.tv); new Thread(){ public void run(){ try { down_file("http://wallpaper.pocketdigi.com/upload/1/bigImage/1284565196.jpg","/sdcard/"); //下载文件,参数:第一个URL,第二个存放路径 } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }.start(); } public void down_file(String url,String path) throws IOException{ //下载函数 filename=url.substring(url.lastIndexOf("/") + 1); //获取文件名 URL myURL = new URL(url); URLConnection conn = myURL.openConnection(); conn.connect(); InputStream is = conn.getInputStream(); this.fileSize = conn.getContentLength();//根据响应获取文件大小 if (this.fileSize <= 0) throw new RuntimeException("无法获知文件大小 "); if (is == null) throw new RuntimeException("stream is null"); FileOutputStream fos = new FileOutputStream(path+filename); //把数据存入路径+文件名 byte buf[] = new byte[1024]; downLoadFileSize = 0; sendMsg(0); do { //循环读取 int numread = is.read(buf); if (numread == -1) { break; } fos.write(buf, 0, numread); downLoadFileSize += numread; sendMsg(1);//更新进度条 } while (true); sendMsg(2);//通知下载完成 try { is.close(); } catch (Exception ex) { Log.e("tag", "error: " + ex.getMessage(), ex); } } private void sendMsg(int flag) { Message msg = new Message(); msg.what = flag; handler.sendMessage(msg); } }

更多相关文章

  1. android 下载文件图片圆形进度条
  2. Android(安卓)读取raw、assets中的txt文件
  3. android webview增加下载附件功能
  4. android 多线程下载
  5. android之IntentService类的实现
  6. android gps开发必备资料(含测试demo下载)
  7. Android(安卓)文件下载与解压缩
  8. Android(安卓)文件下载与解压缩
  9. android 源码下载与编译(ubuntu11.04)

随机推荐

  1. 使用 IntelliJ 查看 Android(安卓)源码
  2. android 如何保护我们的app(二)(干货)
  3. Android使用文件管理器打开指定文件夹,浏
  4. 生产实习(Android)二
  5. Android之PopuWindow简单学习
  6. android如何去掉标题栏
  7. Ubuntu18.04上安装ROS的详细教程
  8. 微信电脑版怎么恢复默认设置?微信恢复默
  9. Win11 22H2 Build 22621登陆发布预览频道
  10. win10怎么设置自动关机命令?win10自动关