<?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 7.0+下载安装
  2. Android版本更新代码
  3. Android开发环境搭建
  4. android studio 56 下载网络歌曲 代码
  5. AndroidStudio使用NDK报错显示mips64el-linux-android-strip''
  6. Android(安卓)配置输出Apk名称和路径、渠道
  7. Android情景模式、文件管理器 完整示例编程详解
  8. ndk 历史版本下载
  9. 国内几大Android应用市场试用小记――开发者篇

随机推荐

  1. ROS与Android的通信
  2. java/android 统计文件夹大小及删除文件
  3. Android 登录界面Demo源码
  4. android在代码中为new出的控件设置ID及se
  5. EditText android:windowSoftInputMode
  6. Android EditText 为空提示 密码隐藏
  7. Android之SimpleAdapter简单实例和Simple
  8. android activity与fragment的生命周期详
  9. 使用android中的aapt查看安卓apk包信息
  10. 【摘录】How do you change the drawing