重置画布位图无法正常工作

时间:2012-03-29 07:26:18

标签: android memory user-interface canvas bitmap

我尝试在画布上绘制一个带有png位图的箭头png。所以每次我旋转箭头我都要重置画布的背景位图,否则我会看到旧箭头的重复。

我用:重置背景:

bMapLoad.eraseColor(0);

问题在于它有时会擦除新箭头的一部分。播种我有时只会看到箭头的一部分。我每10-100毫秒旋转一次像素。

有人可以帮助我吗?

我也试过了:

bMapLoad=bMapcanvasBack.copy(bMapcanvasBack.getConfig(), true);
canvasLoad.setBitmap(bMapLoad);

这很好但需要更多内存。那么还有更好的方法吗?

编辑:

canvasLoad.drawColor(0, PorterDuff.Mode.CLEAR);

不起作用

1 个答案:

答案 0 :(得分:0)

尝试canvas.drawARGB(0,0,0,0)或更简洁canvas.drawColor(0)清除它,然后再次绘制位图(canvas.drawBitmap(...)

部分透支可能有不同的原因 - 绘图和显示之间的同步。通常的做法是使用双缓冲。这意味着,您将在屏幕外画布上绘制,然后使用可见画布交换底层Bitmap。

编辑:使用android:

进行双缓冲的一些有用资源

example here加上“开始安卓游戏”这本书还有一个关于双缓冲的部分。可以下载该书的源代码here