栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Android编程实现下载图片及在手机中展示的方法

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android编程实现下载图片及在手机中展示的方法

本文实例讲述了Android编程实现下载图片及在手机中展示的方法。分享给大家供大家参考,具体如下:

在项目开发中从互联网上下载图片是经常用到的功能,再次总结一下

1.普通的下载方式

布局文件:



 
 


java文件

public class DownloadImage extends Activity {
  private ImageView imgPic;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.download_image);
    imgPic = (ImageView) findViewById(R.id.imgPic);
    String url = "http://ww1.sinaimg.cn/bmiddle/6834c769jw1djjf4p3p9rj.jpg";
    loadRmoteImage(url);
  }
  
  private void loadRmoteImage(String imgUrl) {
    URL fileURL = null;
    Bitmap bitmap = null;
    try {
      fileURL = new URL(imgUrl);
    } catch (MalformedURLException err) {
      err.printStackTrace();
    }
    try {
      HttpURLConnection conn = (HttpURLConnection) fileURL
   .openConnection();
      conn.setDoInput(true);
      conn.connect();
      InputStream is = conn.getInputStream();
      int length = (int) conn.getContentLength();
      if (length != -1) {
 byte[] imgData = new byte[length];
 byte[] buffer = new byte[512];
 int readLen = 0;
 int destPos = 0;
 while ((readLen = is.read(buffer)) > 0) {
   System.arraycopy(buffer, 0, imgData, destPos, readLen);
   destPos += readLen;
 }
 bitmap = BitmapFactory.decodeByteArray(imgData, 0,
     imgData.length);
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
    imgPic.setImageBitmap(bitmap);
  }

2.带进度条的下载

有时候网络差,或者是图片太大,会出现黑屏的情况,用户体验比较差,那么增加一个进度条是提高用户体验的好方法


public class DownloadImage extends Activity {
  private ImageView imgPic;
  private ProgressBar progressBar;
  private int totalSize=0;
  private int size=0;
  private Handler mHandler;
  String url = "http://ww1.sinaimg.cn/bmiddle/6834c769jw1djjf4p3p9rj.jpg";
  private Bitmap bitmap=null;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.download_image);
    imgPic = (ImageView) findViewById(R.id.imgPic);
    progressBar = (ProgressBar) findViewById(R.id.progressBar);
    progressBar.setProgress(getProgressInt(progressBar.getMax()));
    mHandler = new Handler() {
      public void handleMessage(Message msg) {
 progressBar.setProgress(getProgressInt(progressBar.getMax()));
 if(bitmap!=null){
   imgPic.setImageBitmap(bitmap);
 }
      }
    };
    new Thread(){
      public void run(){
 loadRmoteImage(url);
      }
    }.start();
  }
  
  private void loadRmoteImage(String imgUrl) {
    URL fileURL = null;
    try {
      fileURL = new URL(imgUrl);
    } catch (MalformedURLException err) {
      err.printStackTrace();
    }
    try {
      HttpURLConnection conn = (HttpURLConnection) fileURL
   .openConnection();
      conn.setDoInput(true);
      conn.connect();
      InputStream is = conn.getInputStream();
      int length = (int) conn.getContentLength();
      totalSize=length;
      if (length != -1) {
 byte[] imgData = new byte[length];
 byte[] buffer = new byte[512];
 int readLen = 0;
 int destPos = 0;
 while ((readLen = is.read(buffer)) > 0) {
   System.arraycopy(buffer, 0, imgData, destPos, readLen);
   destPos += readLen;
   size=destPos;
   mHandler.sendEmptyMessage(1);
   Thread.sleep(100);
 }
 bitmap = BitmapFactory.decodeByteArray(imgData, 0,
     imgData.length);
 mHandler.sendEmptyMessage(1);
      }
    } catch (IOException e) {
      e.printStackTrace();
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
  }
  private int getProgressInt(int max) {
    int result = (totalSize > 0) ? (int) (size * max * 1.0 / totalSize) : 0;
    return result;
  }
}

效果如下:

下载过程:

下载完成:

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android图形与图像处理技巧总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/159731.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号