美文网首页
android加载大图

android加载大图

作者: 抱不住太阳的深海line | 来源:发表于2018-06-30 09:25 被阅读0次

在项目中可能有这样一个需求,需要加载巨大的图片 并且还不允许压缩。比如显示:世界地图、清明上河图、微博长图等。

那么对于这种需求,该如何做呢?

首先不压缩,按照原图尺寸加载,那么屏幕肯定是不够大的,并且考虑到内存的情况,不可能一次性整图加载到内存中,所以肯定是局部加载,那么就需要用到一个类:

BitmapRegionDecoder

其次,既然屏幕显示不完,那么最起码要添加一个上下左右拖动的手势,让用户可以拖动查看。OK 下面讲一下基本的知识点。

BitmapRegionDecoder的基本用法

        BitmapRegionDecoder能用来解码一张图片的某个矩形区域,这个类一般用在图片过大而你又只需要该图片的一部分的时候。为了生成BitmapRegionDecoder对象,可以调用newInstance(...),得到BitmapRegionDecoder后,使用者可以反复调用decodeRegion来获得该图片的不同区域的解码得到的bitmap.

public Bitmap decodeRegion (Rect rect, BitmapFactory.Options options)

解码该图片的一个矩形区域,该区域由rect决定,返回值为显示图像为该区域的bitmap,注意options中不能使用inPurgeable这个参数。

inPremultiplied参数

如果设置了true(默认是true),那么返回的图片RGB都会预乘透明通道A后的颜色系统View或者Canvas绘制图片,不建议设置为fase,否则会抛出异常,这是因为系统会假定所有图像都预乘A通道的已简化绘制时间.设置inPremultiplied的同时,设置inScale会导致绘制的颜色不正确.

public int getHeight (),public int getWidth ()    获取原图片的宽和高。下面通过一个例子进行深入的讲解

1、生成Bitmap对象

0.png

2、获得图片的宽高(一会边界检查会用到)

1.png

3、创建一个Rect (Rect类主要用于表示坐标系中的一块矩形区域,并可以对其做一些简单操作)

2.png

4、绘制

3.png

通过我们上面得到的BitmapRegionDecoder 对象 得到 bitmap 然后通过canvas画出来

5、触摸反馈(毕竟把一张大图只显示其中的一个区域然后它还不动 用户会骂娘)

这里我用了最简单的方法 重写了onTouchEvent方法

4.png

下面是整个自定义View的完整代码

5.png

相关文章

  • Android自定义View实现加载大长图

    Android加载大长图 一、为什么Android加载图片要进行压缩? Android系统为app分配的内存是有限...

  • Android加载大图和Lrucache 避免oom

    高效加载大图片 (转自)Android高效加载大图、多图解决方案,有效避免程序OOM BitmapFactory这...

  • android加载大图

    在项目中可能有这样一个需求,需要加载巨大的图片 并且还不允许压缩。比如显示:世界地图、清明上河图、微博长图等。 那...

  • Android加载大图

    1.利用BitmapFactory.Options的inJustDecodeBounds属性来读取图片尺寸.参考:...

  • Android 大图加载

    简介 这个项目是一个用于Android预览大图片的图片显示库,可实现原始图片高清显示,专门针对大图片做了很多优化,...

  • Android大图加载

    Android不同的图片模式,每个像素占用的字节大小 requeLayout()、invalidate() req...

  • Android大图加载

    最近公司一个需求,加载一张超大图,允许手势放大缩小以及左右滑动查看。第一想法是利用inSampleSize缩小图片...

  • Android加载大图

    首先,存储在磁盘上的图片是被压缩过的(以JPG,PNG或类似的格式存储)。 一旦将图片加载到内存中,它就不再被压缩...

  • Android 高效加载大图

    1.读取图片信息(宽、高、MimeType) 当然以下静态方法也是可以获得options对象的 2.计算缩放大小 ...

  • Android加载大图——BitmapRegionDecoder

    一、前言 在Android开发中,加载图片是很常见的情况,我们一般选择传统的加载图片框架如universalima...

网友评论

      本文标题:android加载大图

      本文链接:https://www.haomeiwen.com/subject/agzzyftx.html