我知道这是一个很受欢迎的问题,但我没有找到适合我情况的解决方案,我只想获得建议。
我有一个图像,例如4000 x 3000像素(或更大一点),如果我尝试解码它,我得到OutOfMemory错误。我发现的几乎所有解决方案都假设在解码期间使用inSampleSize选项,之前使用某些特殊逻辑计算。它在官方的android文档(有效地加载大位图)中进行了描述。
但是,当我不会失去图像的质量和分辨率时,我正在寻找这种方法,同时我会为用户提供良好的体验。所以我考虑按部分解码位图,但是在互联网上有很多讨论,这表明用这种方法给用户提供良好(流畅)的体验是不可能的(使用当前显示边界和缩放设置解码图像部分会慢一点。
我对最大图像分辨率和质量非常感兴趣,因为我的应用程序正在进行一些测量,并且让用户能够以原始分辨率工作(缩放,移动,指向)非常重要。
请问您能否建议第二种方法足够顺畅,以便为用户提供良好的体验,还是有其他适合我情况的好方法?
答案 0 :(得分:1)
如果你真的想要提供高质量的图像,平滑移动等等,ImageView和使用Android sdk的常规方法对你没有帮助。 我建议您使用OpenGL作为您的目的,看看AndEngine,它是游戏引擎,但您只能使用它的一些方法来创建一个大图像的屏幕。 AndEngine实现起来非常简单,只需将其作为任何其他库添加到您的项目中。
其他选项是在没有任何Android SDK引擎的情况下使用OpenGL:http://developer.android.com/guide/topics/graphics/opengl.html
这是一个使用OpenGL显示大纹理(图像)的简单算法:
P.S链接到AndEngine - http://www.andengine.org/