【发布时间】:2012-10-28 03:03:22
【问题描述】:
我遇到了一个奇怪的问题。当我启用硬件加速时,如果我正在绘制到画布元素,则在画布上绘制的任何内容都将重新绘制到页面顶部。
如果我关闭硬件加速,则不会出现此问题。
我只在 Android 4.1.1 上亲自测试过,但不久前我曾在我们的一位用户身上注意到这个问题,我无法复制(他们至少在 Android 3+ 上)
我无法准确截取屏幕截图(不太清楚如何在 Android 上截取),但我会尝试分解该过程。
启用硬件加速
- 用户填写常规详细信息。
- 用户滚动到页面底部,在画布元素上绘制一个签名。
- 如果用户忘记了页面顶部的内容并滚动到页面顶部
- 出现视觉错误,他们绘制的签名出现在页面顶部
但是没有硬件加速,步骤 4 不会发生。我应该对 HTML5 Canvas 做些什么吗?
我不确定我需要在这里传递什么信息 - 它似乎发生在三星、HTC 和 Google Nexus 手机/平板电脑上,因此它是一个一致的错误。
我尝试四处搜索,但最后总是得到游戏开发线程或类似的东西。
我真的很想启用 Hardware Accel,这是唯一的问题 - 性能提升太不可思议了
【问题讨论】:
-
可能无济于事,但在硬件加速的情况下,表单输入有时也会表现不稳定 = 输入的文本出现在屏幕顶部,输入框也滚动出视图。仅当页面大于屏幕时才会出现此问题。我的想法是在开始绘制他的签名时将页面高度固定为屏幕高度。也许这会有所帮助。
-
不幸的是,作为服务的一部分,这些页面非常动态(并且存在于 phonegap 空间中)
-
还要提一下,我设计了一个在不可滚动页面上使用画布的部分(仅适用于平板电脑)。出现同样的问题(该页面上的画布距离页面顶部大约 40px,它将在同一位置重绘)
-
我至少有一个潜在客户 - Hardware Accel。将画布更改为“表面视图”。我可以让它以任何方式重绘吗?
-
我可以确认,我的 Galaxy Nexus 上仍然存在这个错误,(现在)Android 4.3。它(自然)也存在于这款手机之前的 Android 4.2.2 中。