• subsampling-scale-image-view源码研究


    前言

    代码仓库地址

    在Android平台,用户再查看图片的时候,都有放大缩小图片的需求,放大的主要目的是观察图片的细节。Android提供了ImageView作为展示图片的官方控件,很遗憾,ImageView无法实现这个效果,有人说了,可以通过Matrix矩阵来实现啊,确实通过Matrix可以实现图片的放大或者缩小,但是ImageView完全加载一张大图片的内存代价是惊人的,这种实现方式很容易爆掉内存,最好的做法就是只加载屏幕显示的那部分内容,用户看什么就显示什么,类似于百度地图。

    有没有现成的库可以使用呢?github上还真有很多实现了这个功能的库,个人认为SubSamplingScaleImageView是其中最简单,最好用的一个类库了。作者还在持续改进,重构代码,使之更加好用。

    要点

    • 实现View,重写measure,layout,draw过程
    • 将整个Bitmap分割成很多方块
    • 使用BitmapRegionDecoder来区间加载这些小的Bitmap,铺满整个屏幕
    • 以屏幕的左上角为原点,用户移动的时候,控制图片的Translate,映射Bitmap内容到屏幕上去

    目录

    • UI实现

    • 加载图片细节的实现逻辑

    • 实现首先显示缩略图,然后加载原图

    • 实现多指放大,动态的加载原图

    • 图片超过屏幕大小的时候,移动图片

  • 相关阅读:
    第十一周编程总结
    第十周编程总结
    第九周
    第八周
    第七周编程总结
    第六周编程总结
    学期总结
    第十四周课程总结&实验报告(简单记事本的实现)
    第十三周课程总结
    第十二周课程总结
  • 原文地址:https://www.cnblogs.com/idealgrass/p/4429798.html
Copyright © 2020-2023  润新知