2014-11-02 86 views
1

我正在創建一個應用程序加載圖像在GridView中,但取決於我放在我的數組中的圖像數量我得到 java.lang.outofmemory錯誤和應用程序崩潰。
我有一個ImageAdapter,其中的圖像加載發生,我從Androidhive以下本教程。我的圖片共有大約4.53MB,最大的是1.1MB。一些圖像相當小。有時當我從應用程序運行時一次加載代碼中的圖像時,但是當我一次完成所有圖像時,它會崩潰。

answer似乎明智,但我無法跟隨我的項目設置的方式。我只是有一個GridView並在我的代碼中以編程方式獲取ImageView,但它們似乎是從xml文件引用的。
這裏是我的getView()方法:
@Override public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView = new ImageView(mContext); imageView.setImageResource(mThumbsIds[position]); imageView.setScaleType(ImageView.ScaleType.FIT_CENTER); imageView.setLayoutParams(new GridView.LayoutParams(200, 200)); return imageView; } 其中mThumbsId是存儲我從@drawable文件夾的圖像引用的整數數組。我需要幫助調整我的項目設置的方式調整圖像的大小,也許其他答案可以幫助,但我不能按照他們的結構。與GridView控件以及
我的XML文件:
OutOfMemoryError當加載圖像到GridView

<?xml version="1.0" encoding="utf-8"?> 
<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/grid_view" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:numColumns="auto_fit" 
android:columnWidth="150dp" 
android:horizontalSpacing="5dp" 
android:verticalSpacing="5dp" 
android:gravity="center" 
android:soundEffectsEnabled="true" 
android:stretchMode="columnWidth" > 

</GridView> 


感謝名單中晚期

+0

的大小(MB)不管那麼多了。在分辨率方面圖像的大小有多大? – 2014-11-02 15:13:35

+0

最大的一個是1161 * 1161,最小的一個是350 * 350我剛剛從互聯網上下載了它們。我應該調整大小嗎? @PhilippJahoda – Manny265 2014-11-02 15:21:28

回答

1

的1161x1161像素您提到的圖像在內部轉換爲Bitmap。該位圖(如果是32位)將佔用大約5MB(1161 x 1161 x 4字節)的堆內存。

由於在GridView中使用這些圖像時,內存中會有多個圖像,因此內存不足也就不足爲奇了。所以是的,你應該調整你的圖像的大小,然後將它們加載到GridView

閱讀這個問題/答案如何調整High resolution Image - OutOfMemoryError

+1

使用您的解決方案,並使用imageView.setImageBitmap(decodeSampledBitmapFromResource())方法設置imageview。 Thanx @PhilippJahoda – Manny265 2014-11-03 13:25:08