小技巧

通过BitmapRegionDecoder实现高清长图的加载

2017-07-28  本文已影响53人  JustCode

前言

在商城这类项目中,肯定是有在商品详情页显示长图的需求,当然用h5那就另说了。如果直接使用BitmapFactory.decodeXXX,然后往ImageView上面setImageBitmap,那么程序也就直接抛给你个OOM。通过一波百度 or google,找到了BitmapRegionDecoder这个类,并且实现了此功能。

正题

BitmapRegionDecoder处理图像的原理是:给定一个长方形范围(Rect),然后通过decodeRegion方法来显示此范围。因此要显示长图片,那就需要将长图分割成多个Rect,然后依次有序得显示。因此BitmapRegionDecoder实际上是起到图像分割的作用,因此类似截图拼图的功能也是可以利用它来进行实现的。

BitmapRegionDecoder是通过newInstance()方法进行创建的,这边使用的是:

itmapRegionDecoder newInstance(InputStream is, boolean isShareable)

还有一点需要注意的是,BitmapRegionDecoder最大只能显示4096 * 4096 尺寸的图像Rect,如果超过此大小将不会显示。

上一篇下一篇

猜你喜欢

热点阅读