Android 加载大图问题

关于如何加载大图片及其原理,能够参考: Android 高清加载巨图方案 拒绝压缩图片 以及开源项目LargeImage,第一次使用的时候能正常显示,但后来却没法显示(图片替换了),也没显示错误,查看bug,有一个信息: IllegalArgumentException: rectangle is not inside the image,不过不要被这条信息蒙蔽了,你在进行调试的时候,你会发现其实并未真正的超出范围,但仍是输出这样的结果。当时屏幕是能够滑动的(没法显示图片,但图片高度仍是填充了界面中的scrollview),此刻发现log会一直警告:java

 Bitmap too large to be uploaded into a texture (440x6405, max=4096x4096)

由此就真相大白了,原来是由于当开启硬件加速的时候,GPU对于openglRender 有一个限制,这个不一样的手机会有不一样的限制:android

这个限制值能够经过canvas.getMaximumBitmapHeight()和canvas.getMaximumBitmapWidth()来得到。git

解决方案有两条:http://blog.csdn.net/ta893115871/article/details/9043559github

一、一个解决的方法是禁止硬件加速,简单粗暴:<application android:hardwareAccelerated="false" ...>canvas

二、将图片分红不一样的块,每次加载须要的块。android提供了一个方法(其实加载大图片就是采起这样的方案,但仍是出现上述问题,这个问题没想明白)app

相关文章
相关标签/搜索