【发布时间】:2015-03-08 20:29:38
【问题描述】:
我正在尝试在 android 中创建单人纸牌游戏,因此我正在尝试为一副完整的纸牌加载图像(总共 53 张图像,正面 52 张,背面一张)。图像加载得很好,但是当我尝试缩放它们以适应任何设备的屏幕时,通常在第 13 张卡左右出现内存不足错误。这是我缩放卡片的方法:
public ArrayList<Card> mapBitmapToCard(ArrayList<Card> listOfCards, ArrayList<Bitmap> listOfImages, int screenHeight){
ArrayList<Card> result = new ArrayList<>();
for (int i = 51 ; i >= 0 ; i--){
Card card = listOfCards.get(i);
card.setScaleFactor(screenHeight);
Bitmap cardFront = listOfImages.get(i);
listOfImages.remove(i);
card.image = Bitmap.createScaledBitmap(cardFront, (int) (cardFront.getWidth() * card.scaleFactor), (int) (cardFront.getHeight() * card.scaleFactor), true);
cardFront.recycle();
Bitmap back = Bitmap.createBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.card_back));
card.back = Bitmap.createScaledBitmap(back, (int) (back.getWidth() * card.scaleFactor), (int) (back.getHeight() * card.scaleFactor), true);
back.recycle();
result.add(card);
System.out.println("" + (52 - i) + " cards completed");
}
return result;
}
有没有什么方法可以更有效地修复这种矿石?
【问题讨论】:
标签: android bitmap out-of-memory scaling