使用 Javascript 界面绘制 Android Surfaceview 时闪烁

Flickering when drawing Android Surfaceview with Javascript Interface

有一个网站,其中有一些小脚本可以操纵 canvas。 例如,一些数学很好的动画分形。 所有代码都在 JavaScript.

现在我正在制作一个应用程序来让这个脚本在 Android 上运行, 但因为它是纯 Java 脚本,我无法将代码转换为 Android-Java 来操作 SurfaceView。

我制作了一个 SurfaceView 和一个(隐藏的)WebView。 Webview 运行动画的 JavaScript 代码。在 WebView 中我还注入了一个接口(参见 JavascriptInterface),这样我就可以使用 Java 脚本来触发可以操作 SurfaceView 的函数。

有效!!!但并不完美。

我正在测试的代码将使这些条从左到右和向后平滑地移动:

function u(t){
    c.width=1920 // clear the canvas
    for(i=0;i<9;i++)
    x.fillRect(400+i*100+S(t)*300,400,50,200) // draw 50x200 rects
}

这发生在网站上。当我将 JavaScript 代码转换为非 JavaScript Android 代码 (Java).

时会发生这种情况

它也适用于 JavaScript,但是当我这样做时,Surface 开始闪烁。 1格就看的很清楚了,这9格就惨了

我不知道怎么办,因为我不用Java脚本就可以,但是当我用Java脚本时,它会闪烁。

希望有解决办法。

提前致谢

我知道了。

我确实在绘制一个Rectangle之前锁定了canvas,绘制完后直接解锁,因为SurfaceView有一些缓冲()。

现在我只在 u(t) 函数之前锁定 canvas 并且在它之后才解锁它。 行得通。