【发布时间】:2019-04-22 05:20:18
【问题描述】:
我正在尝试在 Android Studio 中开发一个简单的纸牌游戏,由四个玩家玩。不过,我一开始就很挣扎。我是 android 编程的新手,但不是 Java 开发的。
我只想进行卡片分发(卡片处理),这会将 52 张卡片拆分给每个玩家,分别位于屏幕中的 WEST、SOUTH、EAST、NORTH。
所以我猜,我需要 52 个代表卡片的 ImageView,所以我创建了一个类:
public class Card extends ImageView {
public Card(Context context, int id) {
super(context);
setImageResource(id);
}
}
我有一个包含 52 个元素的静态字符串数组,代表卡片名称,一个哈希表,其中键为卡片名称,值为卡片对象,我在可绘制文件夹中拥有所有卡片的图像,名称相同因为它们在静态数组中命名,所以我可以映射它们。 我正在尝试在 MainActivity 中执行此操作:
for (String cardName : cardNames) {
int imageId = Utilities.getResId(cardName, R.drawable.class);//this just
//gets the id of the image in R
Card card = new Card(this, imageId);
cards.put(cardName, card);
linearLayout.add(card);
}
我还通过调用方法在内容视图中设置了我上面填充的线性布局:
setContentView(linearLayout);
我得到的错误是
java.lang.OutOfMemoryError: Failed to allocate a 11675148 byte allocation with 10183056 free bytes and 9MB until OOM.
这个错误在大约第 15 个循环的 for 循环中被抛出。
现在这肯定是处理这个问题的错误方法。对于这种游戏,我应该遵循的最佳方法是什么?图像将在游戏的整个生命周期中出现在屏幕上,并且还会有简单的动画,例如选择要扔的卡片并扔掉它。
如何处理这种情况,有什么解决方案可以避免以后在游戏中出现内存问题?
【问题讨论】:
标签: java android out-of-memory android-imageview