一、从网络中获取图片的步骤
从网络中获取图片是一个耗时耗资源耗费用户流量的操作,故我们在第一次获取到网络中图片的时候会将其缓存到本地(内存或SD卡),以保证下次再需要这张图片时,可以从本地加载到。
二、SmartImageView的使用方法
SmartImageView是一个自定义控件,使用时用于代替ImageView,其自身包含一系列setImageUrl和setImageContact方法。下载后会发现是一个文件夹下有七个文件,将其直接拷贝到源码根目录(/src)下。具体下载和使用情况请参考http://loopj.com/android-smart-image-view/。
三、源码分析
1、七个类的作用
SmartImageView--自定义控件,其中包含了setImageUrl和setImageContact方法,最终都会调用到setImage方法中,启动一个异步任务加载图片。setImageUrl是根据网络url地址加载图片,setImageContact是根据联系人id加载图片。
SmartImage--抽象类,有一个抽象方法getBitmap,在本项目中包含三个子类BitmapImage、WebImage和ContactImage,可用于扩展。
WebImage--该类中包含通过url获取图片的方法。
WebImageCache--该类中包含从本地获取和保存临时图片的方法。
ContactImage--该类中包含通过contactId从联系人中获取联系人头像的方法。
SmartImageTask--该类实现了Runnable接口,其中有个OnCompleteHandler继承了Handler接口,其中的onComplete是空函数,业务需要时可以进行复写。
BitmapImage--该类可作为辅助类用于传递bitmap。
2、执行流程