【发布时间】:2014-04-14 15:43:47
【问题描述】:
我知道这与partial-invalidation-in-custom-android-view-with-hardware-acceleration 的问题完全相同,但我想我会更详细地解释我的问题,并希望有人能就如何解决问题给出答案。
我编写了一个简单的井字游戏应用程序,它在模拟器上运行良好。但是在我禁用硬件加速时,我发现它在设备上按预期工作,因此无法在设备上运行。
所有字段都用Canvas.drawBitmap() 绘制,“空”字段也用空白图像绘制。线条用Canvas.drawLine()绘制
我正在使用invalidate(Rect) 的部分失效,因为我只想重绘选择设置十字/圆形的区域,并再次使用Canvas.drawBitmap()。但随后整个区域无效,这意味着我看到整个区域/屏幕都是灰色的(白色图像和线条消失了)并且只有十字/圆圈的图像设置在所选区域中。
当我在方法onDraw() 中使用Canvas.getClipBounds() 打印出无效的字段矩形时,使用硬件加速它是整个区域(例如“0,0,320,407”),并且没有硬件加速,我使用@ 失效的相同矩形987654328@(例如“106,135,106,135”)。
目前,作为解决方法,我用相应的图像和线条重绘所有字段。如何防止整个区域因硬件加速而失效?
如果这很重要:我在三星 Galaxy Young Duos S6312 上使用的是 Android 版本 4.1.2。
问候 桑德罗
【问题讨论】:
标签: android canvas invalidation