您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
本篇文章给大家分享的是有关Android开发中怎么实现一个图片下载功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
1.普通的下载方式
布局文件:
<?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"> <ImageView android:src="@drawable/icon" android:layout_width="wrap_content" android:id="@+id/imgPic" android:layout_gravity="center|center_vertical" android:layout_height="fill_parent"> </ImageView> </LinearLayout>
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开发中怎么实现一个图片下载功能,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。