我遇到了这个问题。我想添加这些图片,因为他们有某种索引但我已经尝试添加到数组和现在的hashmap。现在出现同样的错误。
我想如何将这些图像添加到它没有使用所有记忆的索引中?我正在尝试制作测验游戏,我将正确的答案编号为0-21。
答案 0 :(得分:1)
发生错误是因为所有drawable都被解码为位图。考虑将int
ID存储在Collection
(例如R.drawable.someimagename
)中,并在需要时及时获取真实Drawable
对象。
由于您拥有索引为0-21的常数条目,因此您可以使用数组:
int[] groundForceDrawables = new int[22];
groundForceDrawables[0] = R.drawable.sotamies_kauluslaatta;
groundForceDrawables[1] = R.drawable.korpraali_kauluslaatta;
// and so on
当你真的需要在索引i处绘制图像时:
Drawable myCurrentDrawable = getResources().getDrawable(groundForceDrawables[i]);
这仅适用于您不必同时显示所有可绘制的内容的情况。如果你必须将Drawable对象保存在缓存中,因为你必须同时显示它们,我仍然建议缩小它们,你的堆将足够大以保存位图以填充屏幕,除非它们的分辨率不必要地高
如果您还没有这样做,也可以增加堆大小:How to increase heap size of an android application?