整体框架设计
Data层
数据结构:
class ImageInfoModel { String imagePath; boolean isSelected; }
获取系统所有图片的路径,并按照上述结构构造基本数据。
根据用户选择的路径获取指定路径下所有的图片数据,并把数据交给适配层
Adapter层
根据控制层提供的数据进行UI展现前的数据处理,图片选中状态的处理及保存,进行图片压缩,控制选中张数,更新发送按键状态及选中图片张数,为图片预览提供数据。
UI层
展现图片及选中状态,展现发送按键发送状态及当前选中张数,展现预览按键状态
关键点
按路径获取图片
ACTION_PICK
图片处理
- 图片压缩 防止OOM
- 图片旋转 用户体验
图片预览
- instanceItem的时候实例化ImageView,destroyItem的时候移除ImageView对象并置为null
- 不缓存ViewPager的子ImageView,否则可能造成OOM
- 及时销毁子ImageView,加快系统垃圾回收