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实现

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

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

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

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

  • 相关阅读:
    左偏树
    论在Windows下远程连接Ubuntu
    ZOJ 3711 Give Me Your Hand
    SGU 495. Kids and Prizes
    POJ 2151 Check the difficulty of problems
    CodeForces 148D. Bag of mice
    HDU 3631 Shortest Path
    HDU 1869 六度分离
    HDU 2544 最短路
    HDU 3584 Cube
  • 原文地址:https://www.cnblogs.com/idealgrass/p/4429798.html
Copyright © 2011-2022 走看看