2011-09-25 59 views
1

當我嘗試和運行的模擬器小於WVGA800它工作正常解碼位圖(包括手機),但在更大屏幕上,它拋出一個OutOfMemoryError異常機器人的OutOfMemoryError而不是任何小屏幕格式

爲什麼會是這樣?屏幕較大的手機是否擁有更多內存?

private Bitmap getBitmap(int assetKey) { return BitmapFactory.decodeResource(mContext.getResources(), assetKey); } 

回答

1

手機與大屏幕顯示並不總是有比手機將小displas更多的內存。解碼位圖佔用大量內存,每個像素有4個字節的內存。

一般來說,如果位圖太大,則下采樣位圖是個好主意。你可以很容易地做到這一點:

BitmapFactory.Options opts = new BitmapFactory.Options(); 
opts.inSampleSize = n; // <-- this only decode every nth pixel 

Bitmap b = BitmapFactory.decodeResource(mContext, rId, ops); 
+0

當你說「解碼」你的意思是它只「抓住」其他像素?我正在使用spritesheets,而不是牆紙大小的圖像 - 所以像素數量 – GideonKain

相關問題