我想加載大尺寸的圖像,但我有問題做出來。它崩潰,因爲OutOfMemoryError。這是我的數組:如何將數組元素(圖像)轉換爲位圖?
Integer[] img = {
R.drawble.pic1, R.drawble.pic2, R.drawble.pic3, R.drawble.pic4
};
如何轉換IMG [0],IMG [1],IMG [2]和IMG [3]爲位圖? 請幫助..對不起我的英語不好。
我想加載大尺寸的圖像,但我有問題做出來。它崩潰,因爲OutOfMemoryError。這是我的數組:如何將數組元素(圖像)轉換爲位圖?
Integer[] img = {
R.drawble.pic1, R.drawble.pic2, R.drawble.pic3, R.drawble.pic4
};
如何轉換IMG [0],IMG [1],IMG [2]和IMG [3]爲位圖? 請幫助..對不起我的英語不好。
試試這個代碼,你將一組ID轉換成的Bitmap
數組:
Integer[] img = { R.drawble.pic1, R.drawble.pic2, R.drawble.pic3,
R.drawble.pic4 };
Bitmap[] bitmap = new Bitmap[img.length];
for (int i = 0; i < img.length; i++)
bitmap[i] = BitmapFactory.decodeResource(getResources(), img[i]);
如果您有問題需要轉換大尺寸圖片看看Displaying Bitmaps Efficiently。
Android應用程序有一個有限的堆大小(最小的舊設備是16MB少)。這根據設備而異,所以在質量保證期間要小心。由於位圖每個像素可能需要多達4個字節,所以大的位圖可以輕鬆填滿堆(1000 x 1000像素= 3.8MB)
這意味着您必須非常小心並使用幾種策略避免浪費內存:
請勿將所有位圖同時加載到內存中。例如,如果您在ViewPager
中顯示它們,則一次只能加載1-2頁。隱藏頁面時,銷燬其位圖並調用bitmap.recycle()
以確保內存立即釋放。
如果位圖大於屏幕尺寸,可以縮小尺寸以節省內存。技術here將允許您加載它最初減少2/3/4 ..如果您需要更多的微調,您可以加載它的全尺寸,然後使用Bitmap.createScaledBitmap
重新調整。只要不要忘記recycle()
立即原來的大位圖。
請確保使用內存檢查工具(如DDMS或Eclipse MAT
)探索您的應用的內存使用情況。我推薦在Android 4+上進行大部分探索,因爲2.x在本地堆中保存了位圖,這是無法輕鬆探索的。如果您可以將應用程序保持在16MB內存消耗峯值以下,則不應再次發生OutOfMemoryError。
http://developer.android.com/training/displaying-bitmaps/manage-memory.html。檢查這個主題。 '回收'或縮小圖像。 – Raghunandan
@Raghunandan:我試過把圖片轉換成位圖。但我不能從元素數組中獲得它。 –
Android在加載大圖像時出現問題。看看文章[高效載入大型位圖](http://developer.android.com/training/displaying-bitmaps/load-bitmap.html)。 –