本篇文章给大家分享的是有关Android开发中怎么实现一个图片下载功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、小程序定制开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了温县免费建站欢迎大家使用!
1.普通的下载方式
布局文件:
<?xml version="1.0" encoding="utf-8"?>
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); } /** * @param imgUrl * 远程图片文件的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.带进度条的下载
有时候网络差,或者是图片太大,会出现黑屏的情况,用户体验比较差,那么增加一个进度条是提高用户体验的好方法
/** * @author xushilin xsl xushilin@kingtoneinfo.com * @version: 创建时间:2011-7-27 下午02:55:56 * 说 明: android中下载图片 * 修改历史: */ 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(); } /** * @param imgUrl * 远程图片文件的URL * * 下载远程图片 */ 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开发中怎么实现一个图片下载功能,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。