新的Canvas(位图)在galaxy s上崩溃但在nexus上工作

时间:2012-03-28 09:24:58

标签: android canvas galaxy

有人可以告诉我为什么我的应用程序在samsumg galaxy nexus上正常工作但在三星Galaxy s上崩溃了吗? 我发现它在这一行崩溃了:

bMapRpm=BitmapFactory.decodeResource(getResources(), R.drawable.canvasback);
canvasRpm = new Canvas(bMapRpm);

BitmapFactory.decodeResource工作正常但是当我创建新的Canvas时它会崩溃。

我无法发布logcat,因为我的galaxy s(我不知道为什么)不支持logcat

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

我猜,位图必须是可变的。 Doc:"构造一个带有指定位图的画布。位图必须是可变的。"

你可以:

bMapRpm=BitmapFactory.decodeResource(getResources(), R.drawable.canvasback);

Bitmap mutableCopy = Bitmap.createBitmap(bMapRpm.getWidth(),bMapRpm.getHeight(),bMapRpm.getConfig());
canvasRpm = new Canvas(mutableCopy);
canvasRpm.drawBitmap(bMapRpm, null, null);
bMapRpm.recycle();

..做任何想要的画布

答案 1 :(得分:0)

创建可变位图的简便方法, 使用Bitmap.copy(confit,is_mutable), 你可以尝试一下:

bMapRpm=BitmapFactory.decodeResource(getResources(), R.drawable.canvasback);
Bitmap mutableCopy = bMapRpm.copy(Bitmap.Config.ARGB_8888, true);
canvasRpm = new Canvas(mutableCopy);