本文实例讲述了AndroID开发实现加载网络图片并下载至本地SdCard的方法。分享给大家供大家参考,具体如下:
package com.example.myimagedemo;import java.io.bufferedoutputstream;import java.io.file;import java.io.fileNotFoundException;import java.io.fileOutputStream;import java.io.IOException;import java.io.inputStream;import java.net.httpURLConnection;import java.net.URL;import androID.app.Activity;import androID.graphics.Bitmap;import androID.graphics.BitmapFactory;import androID.os.Bundle;import androID.os.Environment;import androID.os.Handler;import androID.os.Message;import androID.Widget.ImageVIEw;public class MainActivity extends Activity { private ImageVIEw mImageVIEw; private String imgPath="http://pic.nipic.com/2007-11-09/200711912453162_2.jpg"; private file cache;//缓存路径 Handler handler=new Handler(new Handler.Callback() { @OverrIDe public boolean handleMessage(Message msg) { //显示 Bitmap b=(Bitmap)msg.obj; mImageVIEw.setimageBitmap(b); //保存至本地 file imgfile=new file(cache,"woca.jpg"); try { bufferedoutputstream bos=new bufferedoutputstream(new fileOutputStream(imgfile)); b.compress(Bitmap.CompressFormat.JPEG,80,bos); bos.flush(); bos.close(); } catch (Exception e) { // Todo auto-generated catch block e.printstacktrace(); } return false; } }); @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); mImageVIEw=(ImageVIEw)findVIEwByID(R.ID.mImageVIEw); //创建缓存路径 //Environment.getExternalStorageDirectory()获取手机内存卡根路径 cache=new file(Environment.getExternalStorageDirectory(),"Test"); if(!cache.exists()){ cache.mkdirs(); } //耗时 *** 作都要放在子线程 *** 作 //开启子线程获取输入流 new Thread(new Runnable() { @OverrIDe public voID run() { httpURLConnection conn=null; inputStream is=null; try { URL url=new URL(imgPath); //开启连接 conn=(httpURLConnection) url.openConnection(); //设置连接超时 conn.setConnectTimeout(5000); //设置请求方式 conn.setRequestMethod("GET"); //conn.connect(); if(conn.getResponseCode()==200){ is=conn.getinputStream(); Bitmap b=BitmapFactory.decodeStream(is); //把输入流转化成bitmap格式,以msg形式发送至主线程 Message msg=new Message(); msg.obj=b; handler.sendMessage(msg); } } catch (Exception e) { e.printstacktrace(); }finally{ try { //用完记得关闭 is.close(); conn.disconnect(); } catch (IOException e) { e.printstacktrace(); } } } }).start(); }}
记得在AndroIDMenifest.xml文件加入这三个权限
<uses-permission androID:name="androID.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission androID:name="androID.permission.INTERNET"/><uses-permission androID:name="androID.permission.MOUNT_UNMOUNT_fileSYstemS"/>
另,可点击此处查看Android权限 *** 作说明
更多关于AndroID相关内容感兴趣的读者可查看本站专题:《Android图形与图像处理技巧总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家AndroID程序设计有所帮助。
总结以上是内存溢出为你收集整理的Android开发实现加载网络图片并下载至本地SdCard的方法全部内容,希望文章能够帮你解决Android开发实现加载网络图片并下载至本地SdCard的方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)