2014-11-02 44 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