从内存缓存图片
MemoryCacheUtils
1 public class MemoryCacheUtils { 2 3 private HashMaphashlist=new HashMap (); 4 /** 5 * 6 * 从内存中读 7 * @param url 8 * @return 9 */10 public Bitmap getBitmapFrommemory(String url){11 Bitmap bitmap = hashlist.get(url);12 return bitmap;13 }14 15 16 /**17 * 18 * 写入内存19 * @param url20 * @param bitmap21 */22 public void setBitmapTomemory(String url,Bitmap bitmap){23 hashlist.put(url, bitmap);24 }25 }
2.在NetCacheUtils中调用setBitmapTomemory(String url,Bitmap bitmap)方法获取
1 /** 2 * 3 * 从网络下载图片 4 * @author admin 5 * 6 */ 7 public class NetCacheUtils { 8 private LocalCacheUtils mlocalcacheutils; 9 private MemoryCacheUtils mmemorycacheutils; 10 11 public NetCacheUtils(LocalCacheUtils localcacheutils, MemoryCacheUtils memorycacheutils) { 12 mlocalcacheutils=localcacheutils; 13 mmemorycacheutils=memorycacheutils; 14 } 15 16 public void getBitmapFromNet(ImageView iv_photo, String url) { 17 // TODO Auto-generated method stub 18 BitmapTask bitmaptask=new BitmapTask(); 19 bitmaptask.execute(iv_photo,url);//开启AsyncTask,参数在doInBackground获取 20 } 21 /*AsyncTask 异步任务即做一些简单的异步处理 ;是handle与线程池的封装 22 * 第一个泛型:参数类型泛型 23 * 第二个泛型:更新进度泛型 24 * 第三个泛型:onProgressUpdate的返回结果的泛型 25 * 26 */ 27 28 class BitmapTask extends AsyncTask
3.在中调用Bitmap getBitmapFrommemory(String url)方法
1 /** 2 * 3 * 4 * 子定义图片加载工具 5 * @author admin 6 * 7 */ 8 public class MyBitMaputils { 9 NetCacheUtils netcache;10 LocalCacheUtils localcacheutils;11 MemoryCacheUtils memorycacheutils;12 public MyBitMaputils(){13 memorycacheutils=new MemoryCacheUtils();14 localcacheutils=new LocalCacheUtils();15 netcache=new NetCacheUtils(localcacheutils,memorycacheutils);16 17 }18 Bitmap bitmap =null;19 public void display(ImageView iv_photo, String url) {20 iv_photo.setImageResource(R.drawable.news_pic_default);//默认图片,防止图片的复用21 //内存缓存22 bitmap= memorycacheutils.getBitmapFrommemory(url);23 if(bitmap!=null){24 iv_photo.setImageBitmap(bitmap);25 System.out.println("从内存中读取图片");26 return;27 }28 //本地缓存29 bitmap = localcacheutils.getBitmapFromlocal(url);30 if(bitmap!=null){31 iv_photo.setImageBitmap(bitmap);32 memorycacheutils.setBitmapTomemory(url, bitmap);//若本地中有,则从本地获取33 System.out.println("从本地读取图片");34 return;//从本地读取就不需要从网络读取了35 }36 37 //网络缓存(第一次)38 netcache.getBitmapFromNet(iv_photo,url);39 }40 41 42 }