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

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

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

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

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

  • 相关阅读:
    jQuery学习笔记(一):入门
    jQuery学习笔记(二):this相关问题及选择器
    数据库基础
    有关程序员转行的想法
    在团队中如何带领新手——阅读有感
    C#中的集合类——ArrayList
    .NET基础——ASSCII码表
    C#中的文件操作2
    C#中的文件操作1
    C#中的StringBuilder
  • 原文地址:https://www.cnblogs.com/idealgrass/p/4429798.html
Copyright © 2011-2022 走看看