自JellyBean以来Canvas.drawBitmap中的错误?

时间:2012-07-24 22:45:23

标签: android android-4.2-jelly-bean

我的设备上的某个应用更新了Jelly Bean,我有一种奇怪的行为。 这个游戏做了一个: canvas.drawBitmap(bitmap,locationX,locationY,null); 我的位图可以是2个大小:40x15和60x15。

在Jelly Bean设备上(我在Galaxy Nexus和Nexus S上试过),当使用60x15的位图时,drawBitmap什么都没画。如果我调整到40x15,它可以正常工作。

对于较低版本的android,我没有任何问题。

提前致谢!

2 个答案:

答案 0 :(得分:1)

我通过将所有图形的副本存储在“/ drawable-nodpi”中找到了解决方法。然后Jellybean给他们看了。

答案 1 :(得分:0)

似乎Jellybean为drawBitmap()引入了新的缓存行为。现在它尝试在硬件中为每个位图对象缓存纹理。

这意味着如果重绘相同的位图对象,它将重新使用之前的纹理。但是它不会检查位图对象的内容是否已更改,它只是使用指针来查找缓存。

在我看来,这完全被打破了,但出于性能原因,他们显然决定这样做。类似的逻辑适用于drawPath()。

我怀疑不同大小的行为是因为当您调整位图大小时会导致分配新的缓冲区。