美文网首页
Android中加载超大图不产生OOM

Android中加载超大图不产生OOM

作者: 浮名虚誉架构师 | 来源:发表于2017-06-13 11:02 被阅读0次

我们在开发的时候会遇到加载巨图的需求,如何加载一个大图而不产生OOM呢,可以使用系统提供的BitmapRegionDecoder这个类。

BitmapRegionDecoder:区域解码器,可以用来解码一个矩形区域的图像,有了这个我们就可以自定义一块矩形的区域,然后根据手势来移动矩形区域的位置就能看到整张图片了。

下面就来完成一个加载大图并支持拖动查看,双击放大,手势缩放的的自定义View。

第一步,初始化变量

第二步,设置需要加载的图片

第三步,获取View的宽高,计算缩放值

第四步,绘制

第五步,分发事件

第六步,处理GestureDetector中的事件

当手指按下的时候,如果图片正在快速滑动,那么停止

onScroll()中处理滑动,根据手指移动的参数,来移动矩形绘制区域,这里需要处理各个边界点,比如左边最小就为0,右边最大为图片的宽度,不能超出边界否则就报错

onFling方法中调用滑动器Scroller的fling()方法来处理手指离开之后的惯性滑动。移动的距离在View的computeScroll()方法中计算,也需要注意边界问题,不要滑出边界

第七步,处理双击事件

第八步,处理手指缩放事件

相关文章

网友评论

      本文标题:Android中加载超大图不产生OOM

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