1.创建NetCacheUtils中创建downloadBitmap(String url)方法

  1. private Bitmap downloadBitmap(String url){
  2. HttpURLConnection conn=null;
  3. try {
  4. conn=(HttpURLConnection) new URL(url)
  5. .openConnection();
  6.  
  7. conn.setConnectTimeout(5000);
  8. conn.setReadTimeout(5000);
  9. conn.setRequestMethod("GET");
  10. conn.connect();
  11.  
  12. int responseCode = conn.getResponseCode();//响应码
  13.  
  14. if(responseCode==200){//表示成功连接
  15. InputStream inputStream = conn.getInputStream();
  16. Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
  17. return bitmap;
  18. }
  19.  
  20. } catch (IOException e) {
  21.  
  22. e.printStackTrace();
  23. }
  24. finally{
  25. conn.disconnect();
  26. }
  27. return null;
  28.  
  29. }

2.在NetCacheUtils中调用这个方法

  1. public class NetCacheUtils {
  2.  
  3. public void getBitmapFromNet(ImageView iv_photo, String url) {
  4. // TODO Auto-generated method stub
  5. BitmapTask bitmaptask=new BitmapTask();
  6. bitmaptask.execute(iv_photo,url);//开启AsyncTask,参数在doInBackground获取
  7. }
  8. /*AsyncTask 异步任务即做一些简单的异步处理 ;是handle与线程池的封装
  9. * 第一个泛型:参数类型泛型
  10. * 第二个泛型:更新进度泛型
  11. * 第三个泛型:onProgressUpdate的返回结果的泛型
  12. *
  13. */
  14.  
  15. class BitmapTask extends AsyncTask<Object, Void, Bitmap>{
  16.  
  17. private ImageView pic;
  18. private String murl;
  19. /**
  20. * 后台耗时方法在此执行,子线程
  21. */
  22. @Override
  23. protected Bitmap doInBackground(Object... params) {
  24. pic = (ImageView) params[0];
  25. murl = (String) params[1];
  26.  
  27. pic.setTag(murl);//将图片与url绑定
  28. return downloadBitmap(murl);
  29. }
  30. /**
  31. * 更新进度,主线程
  32. */
  33. @Override
  34. protected void onProgressUpdate(Void... values) {
  35. // TODO Auto-generated method stub
  36. super.onProgressUpdate(values);
  37. }
  38. /**
  39. * 后台耗时方法结束之后,在此执行,主线程
  40. */
  41. @Override
  42. protected void onPostExecute(Bitmap result) {
  43. if(result!=null){
  44.  
  45. String tag = (String) pic.getTag();
  46. if(tag.equals(murl)){
  47. pic.setImageBitmap(result);
  48. }
  49.  
  50. }
  51. System.out.println("从网络上加载图片啦");
  52.  
  53. }
  54. }

3.在MyBitMaputils类中调用NetCacheUtils类

  1. public class MyBitMaputils {
  2. NetCacheUtils netcache;
  3. public MyBitMaputils(){
  4. netcache=new NetCacheUtils();
  5. }
  6.  
  7. public void display(ImageView iv_photo, String url) {
  8. iv_photo.setImageResource(R.drawable.news_pic_default);//默认图片,防止图片的复用
  9. //内存缓存
  10.  
  11. //本地缓存
  12.  
  13. //网络缓存(第一次)
  14. netcache.getBitmapFromNet(iv_photo,url);
  15. }
  16.  
  17. }

4.就可以直接使用MyBitMaputils这个工具类了

使用HttpURLConnection和AsyncTask从网络缓存图片的更多相关文章

  1. iOS网络编程(三) 异步加载及缓存图片---->SDWebImage

    @SDWebImage提供一个UIImageView的类别以支持加载来自网络的远程图片.具有缓存管理.异步下载.同一个URL下载次数控制和优化等特征. @SDWebImage的导入1.https:// ...

  2. Android公共库——图片缓存 网络缓存 下拉及底部更多ListView 公共类

    Android公共库——图片缓存 网络缓存 下拉及底部更多ListView 公共类 转载自http://www.trinea.cn/android/android-common-lib/ 介绍总结的一 ...

  3. Android LazyList 从网络获取图片并缓存

    原演示地址 本文内容 环境 演示 LazyList 从网络获取图片并缓存 参考资料 本文是 Github 上的一个演示,通过网络获取歌手专辑的缩略图,并显示在 ListView 控件中.该演示具备将缩 ...

  4. 【Java/Android性能优 7】Android公共库——图片缓存 网络缓存 下拉及底部更多ListView 公共类

    本文转自:http://www.trinea.cn/android/android-common-lib/ 介绍总结的一些android公共库,包含缓存(图片缓存.预取缓存.网络缓存).公共View( ...

  5. Android异步下载图片并且缓存图片到本地

    Android异步下载图片并且缓存图片到本地 在Android开发中我们经常有这样的需求,从服务器上下载xml或者JSON类型的数据,其中包括一些图片资源,本demo模拟了这个需求,从网络上加载XML ...

  6. 综合使用LruCache和DiskLruCache 缓存图片

    Activity public class MainActivity extends Activity {     private GridView mPhotoWall;     private P ...

  7. Android之简单了解Bitmap显示图片及缓存图片

    昨天我们学了如何连接网络,今天我们就学习一下如何从把网上图片显示到项目中 今天主要用到的是Bitmap 类 Bitmap是Android系统中的图像处理的最重要类之一.用它可以获取图像文件信息,进行图 ...

  8. Android ListView从网络获取图片及文字显示

    上一篇文章说的是ListView展示本地的图片以及文本,这一篇说一下如何从网络获取图片以及文本来显示.事实上,一般是先获取Josn或sml数据,然后解释显示.我们先从网上获取xml,然后对其进行解析, ...

  9. Android 网络下载图片

    2中方法: 1. public byte[] downloadResource(Context context, String url) throws ClientProtocolException, ...

随机推荐

  1. 1.VS2010C++环境设置

    一.需要下载的软件 1.visual studio 2010\\xxzx\tools\编程工具\MICROSOFT\VISUAL.STUDIO\VISUAL.STUDIO.201032位cn_visu ...

  2. POJ 3304 Segments (直线和线段相交判断)

    Segments Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7739   Accepted: 2316 Descript ...

  3. setInterval和setTimeout调用方法小知识科普

    function a() { alert('hello'); } setInterval(a, ); setInterval(a(), ); setInterval(); setInterval(); ...

  4. window

  5. UVa 297 - Quadtrees

    题目:利用四叉树处理图片,给你两张黑白图片的四叉树,问两张图片叠加后黑色的面积. 分析:搜索.数据结构.把图片分成1024块1*1的小正方形,建立一位数组记录对应小正方形的颜色. 利用递归根据字符串, ...

  6. CString 转 char*; wstring 转 string

    1. CString  转 char* ); CString name; name.Format(_T("bookUC%d.txt"),m_ID); std::wstring _n ...

  7. 快递查询API接口(trackingmore)

    快递查询接口 目前提供快递查询的接口平台有: Trackingmore 快递100 快递网 不同接口的区别: (1)Trackingmore支持380家快递公司,其中有55家为国内的快递,其余325家 ...

  8. php 扩展 redis

    1.通过phpinfo 查看php的版本(  要注意php 是nts 还是ts 通过phpinfo(); 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全,如果是:enabl ...

  9. RFID FDX HDX Technology

    Got a tough RF environment? Turn to TI’s proven LF technology TI’s low-frequency (LF) technology has ...

  10. STUN: NAT 类型检测方法

    STUN(Simple Transversal of UDP through NATs)[21]是RFC3489 规定的一种NAT 穿透方式,它采用辅助的方法探测NAT 的IP 和端口. STUN 的 ...