最近寫項目遇到一個這樣的異常:
W/OpenGLRenderer: Bitmap too large to be uploaded into a texture (950x16544, max=16384x16384)
簡單來說跟衅,Android對于圖片大小的顯示是有限制的惠桃,太大或者太長的圖片都無法顯示。在網(wǎng)上查了一下,說是關閉硬件加速就可以解決這個問題钩蚊,但是試了一下,沒用,還是無法顯示敲长。
關閉硬件加速沒用郎嫁,而且關閉硬件加速也不太好,會對性能造成一定影響祈噪。
最后想出另外一個辦法:將bitmap位圖切割將其放進鏈表泽铛,然后在將其顯示出來。
方法如下:
public static ArrayList resizeBitmapList(Bitmap source) {
ArrayList bitmapsList =newArrayList<>();
int height = source.getHeight();
int maxHeight =4000;
int width = source.getWidth();
int count = height%maxHeight==0?height/maxHeight:height/maxHeight+1;
if(height > maxHeight) {
for(int i=0; i
if(i != count -1) {
bitmapsList.add(Bitmap.createBitmap(source,0, maxHeight * i, width, maxHeight));
}else{
bitmapsList.add(Bitmap.createBitmap(source,0,maxHeight*i,width,height-maxHeight*i));
}
}
}else{
bitmapsList.add(source);
}
return bitmapsList;
}
這樣辑鲤,將獲取的bitmap進行切割之后盔腔,放進ListView或者RecyclerView的適配器中顯示出來就可以了!