我前面的博客写了网络获取图片的方法(见:《Android中获取网络图片的方法(如果手机缓存里面有就从缓存获取)》),但比较原始,代码比较冗长,想简化一下。另外一篇文章:《Android中获取网络图片的三种方法》里面的公用获取Drawable对象的方法,是不会缓存到手机里面的,这里就把那个方法(loadImageFromNetwork() )重写一下,达到图片缓存的目的:

// 如果缓存里面有就从缓存获取,否则网络获取图片,返回Drawable对象public static Drawable loadImageFromNetwork(Context context, String imageUrl){Drawable drawable = null;if(imageUrl == null )return null;String imagePath = "";String   fileName   = "";// 获取url中图片的文件名与后缀if(imageUrl!=null&&imageUrl.length()!=0){             fileName  = imageUrl.substring(imageUrl.lastIndexOf("/")+1);}// 图片在手机本地的存放路径,注意:fileName为空的情况imagePath = context.getCacheDir() + "/" + fileName;Log.i("test","imagePath = " + imagePath);File file = new File(context.getCacheDir(),fileName);// 保存文件Log.i("test","file.toString()=" + file.toString());if(!file.exists()&&!file.isDirectory()){try {// 可以在这里通过文件名来判断,是否本地有此图片FileOutputStream   fos=new   FileOutputStream( file );InputStream is = new URL(imageUrl).openStream();int   data = is.read(); while(data!=-1){         fos.write(data);         data=is.read();; } fos.close();is.close();//drawable = Drawable.createFromStream(//new URL(imageUrl).openStream(), file.toString() ); // (InputStream) new URL(imageUrl).getContent();drawable = Drawable.createFromPath(file.toString());Log.i("test", "file.exists()不文件存在,网上下载:" + drawable.toString());} catch (IOException e) {Log.d("test", e.getMessage());}}else{drawable = Drawable.createFromPath(file.toString());Log.i("test", "file.exists()文件存在,本地获取");}if (drawable == null) {Log.d("test", "null drawable");} else {Log.d("test", "not null drawable");}return drawable ;}

更多相关文章

  1. 第一章 工欲善其事 必先利其器—Android(安卓)SDK工具(7)
  2. Android使用ttf字体库替代替图片
  3. android定位方式
  4. Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等
  5. Android读取联系人的姓名及电话号码
  6. Android(安卓)APP设计加载使用gif动图需要注意的一般性问题
  7. [置顶] 解析android 流量监测的实现原理
  8. Android(安卓)API :SMS短信服务处理和获取联系人
  9. Android:将View的内容映射成Bitmap转图片导出

随机推荐

  1. Android(安卓)完全掌握Service
  2. Android虚拟键盘挡住输入框的处理方法
  3. Android按返回键弹出对话框退出应用程序
  4. Android分享功能
  5. Using Android's Compatibility Test Sui
  6. Android(安卓)正则表达式验证手机和邮箱
  7. 【从头学android】第一个程序,点按钮显示H
  8. Android大图片加载处理
  9. android 数据库初体验
  10. Android(安卓)studio 学习资料汇总