【发布时间】:2012-03-28 13:04:16
【问题描述】:
在我的应用程序中,我有 3 个包含多个高分辨率图像的屏幕。屏幕中使用的图像数量约为 70-75。我已经编写了代码以使用扩展 BaseAdapter 的适配器类在网格布局中添加图像,在 getView() 方法中我编写了代码,
adapter = new ImageAdapter(this);
gridview.setAdapter(adapter);
int x = (int)(width/5.1f);
imageView.setId(position);
imageView.setLayoutParams(new GridView.LayoutParams(x,x));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(4, 20, 4, 20);
但是在加载这个屏幕时,它显示了很多内存问题,并且在 logcat 中我得到了错误,
java.lang.OutOfMemoryError: bitmap size exceeds VM budget
请分享我如何编写代码来处理多个高分辨率图像的内存问题。谢谢。
【问题讨论】:
-
70-75...什么是惊喜,嗯? ) 在此处放置 ImageAdapter 的代码
-
你应该使用缩略图,只有解决方案......
-
正如 Ferdau 所说,您应该生成较小尺寸的图像(缩略图)以显示为网格,并且仅在用户需要时才显示全分辨率图像(例如通过单击图像)。这将解决您的内存问题并运行得更快。
-
是的。感谢 Ferdau 和 kai。
标签: android memory-management android-emulator android-imageview performance