图片缩放以及大图功能点:
- 与父View之间触摸事件的冲突,滑动到边缘时,不拦截事件
- 缩放时超过最大或最小缩放比例时要依然可以缩放,并且要模拟拉橡皮筋的感觉
- 读取图片碎片时要再细分成一个一个的小块去读取,因为用户在缓慢滑动的过程中,部分区域是一直显示的,没有必要再读一遍
- 横向和竖向均要支持显示滑动进度,这样用户能大概明白图片有多高多宽
- 支持两级缩放
图片的三级缩放比例
- 第一级要显示图片的全貌
- 第二级要让较小的一边充满屏幕,然后用户在一个方向上滑动即可查看全部图片
- 第三级要以图片原始宽高一比一显示,这样用户能看到最清晰的图片
- 一级缩放跟二级缩放比例非常接近时就用一级的两倍作为二级
- 如果三级还没有二级的两倍大,那么就用二级的两倍作为三级缩放倍数
大图功能开启条件
- 只有没有完整显示的图片才能使用大图功能
- 只有jpg、png、webp格式的图片才能使用大图功能
DiskLruCache踩坑记:
- edit()的时候执行了flush,及时的把操作记录保存到了本地,但是commit()和abort()的时候没有执行flush(),导致最后一个缓存的commit()记录不能及时的保存到本地, 如果这时候强行杀死的APP,那么最后一个缓存有没有commit记录导致被认为是脏数据而不能使用
- deleteContents(File)方法在清空一个目录时,如果获取不到其子文件,就直接抛运行时异常了,这样太严苛了
- 在执行remove(String)方法删除一个缓存时,如果缓存文件已经不存在了就会抛出运行时异常,这样太严苛了