同一张长图,在ImageView上 加载时,部分手机不显示。提示如下异常:
W/OpenGLRenderer: Bitmap too large to be uploaded into a texture (1080x18151, max=16384x16384)
原因:
当APP开启硬件加速的时候,GPU对于openglRender 渲染有一个限制值,超过了这个限制值,就无法渲染,不同的手机会有不同的限制值;
解决:
获取openglRender的限制值
public static int getOpenglRenderLimitValue() {
int maxsize;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
maxsize = getOpenglRenderLimitEqualAboveLollipop();
} else {
maxsize = getOpenglRenderLimitBelowLollipop();
}
return maxsize == 0 ? 4096 : maxsize;
}
private static int getOpenglRenderLimitBelowLollipop() {
int[] maxSize = new int[1];
GLES10.glGetIntegerv(GLES10.GL_MAX_TEXTURE_SIZE, maxSize, 0);
return maxSize[0];