2012-07-24 25 views
0

我有一个奇怪的行为,我的应用程序更新到果冻豆的设备上。 这个游戏做一个: canvas.drawBitmap(bitmap,locationX,locationY,null); 我的位图可以是2尺寸:40x15和60x15。自从JellyBean以来,Canvas.drawBitmap中的错误?

在Jelly Bean设备上(我在Galaxy Nexus和Nexus S上试过),drawBitmap在使用60x15的位图时没有画任何东西。如果我调整到40x15,它工作正常。

我没有任何问题与较低版本的android。

在此先感谢!

+0

创建一个小测试用例并提交一个错误报告。 – blessenm 2012-07-25 00:26:38

+0

你可以发布一些导致行为的代码和图像,以及出错的截图吗?即使这是一个错误,也许有人可以找到解决方法 – Craigy 2012-07-27 02:37:10

回答

1

我在“/ drawable-nodpi”中找到了所有图形的副本。 Jellybean然后向他们展示了它们。

0

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

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

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

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