Skip to content

Latest commit

 

History

History
24 lines (20 loc) · 1.72 KB

notes.md

File metadata and controls

24 lines (20 loc) · 1.72 KB

图片缩放以及大图功能点:

  • 与父View之间触摸事件的冲突,滑动到边缘时,不拦截事件
  • 缩放时超过最大或最小缩放比例时要依然可以缩放,并且要模拟拉橡皮筋的感觉
  • 读取图片碎片时要再细分成一个一个的小块去读取,因为用户在缓慢滑动的过程中,部分区域是一直显示的,没有必要再读一遍
  • 横向和竖向均要支持显示滑动进度,这样用户能大概明白图片有多高多宽
  • 支持两级缩放

图片的三级缩放比例

  • 第一级要显示图片的全貌
  • 第二级要让较小的一边充满屏幕,然后用户在一个方向上滑动即可查看全部图片
  • 第三级要以图片原始宽高一比一显示,这样用户能看到最清晰的图片
  • 一级缩放跟二级缩放比例非常接近时就用一级的两倍作为二级
  • 如果三级还没有二级的两倍大,那么就用二级的两倍作为三级缩放倍数

大图功能开启条件

  • 只有没有完整显示的图片才能使用大图功能
  • 只有jpg、png、webp格式的图片才能使用大图功能

DiskLruCache踩坑记:

  • edit()的时候执行了flush,及时的把操作记录保存到了本地,但是commit()和abort()的时候没有执行flush(),导致最后一个缓存的commit()记录不能及时的保存到本地, 如果这时候强行杀死的APP,那么最后一个缓存有没有commit记录导致被认为是脏数据而不能使用
  • deleteContents(File)方法在清空一个目录时,如果获取不到其子文件,就直接抛运行时异常了,这样太严苛了
  • 在执行remove(String)方法删除一个缓存时,如果缓存文件已经不存在了就会抛出运行时异常,这样太严苛了