zoukankan      html  css  js  c++  java
  • subsampling-scale-image-view源码研究

    前言

    代码仓库地址

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

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

    要点

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

    目录

    • UI实现

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

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

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

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

  • 相关阅读:
    CSS截取字符串
    mysql数据库中列转行
    Html页面操作json串
    mysql批量上传数据
    常见的表单元素选中
    关于Connection must be valid and open.
    百度editor调用【图片上传阿里云】
    百度apistore第三方登陆
    如何提高网页运行性能
    Html页面加回滚
  • 原文地址:https://www.cnblogs.com/idealgrass/p/4429798.html
Copyright © 2011-2022 走看看