【问题标题】:Flickering when drawing Android Surfaceview with Javascript Interface使用Javascript接口绘制Android Surfaceview时闪烁
【发布时间】:2019-09-08 14:26:09
【问题描述】:

有一个网站,其中有用于操作画布的小脚本。 例如,一些数学很好的动画分形。 所有代码都在 JavaScript 中。

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

我制作了一个 SurfaceView 和一个(隐藏的)WebView。 Webview 运行动画的 JavaScript 代码。在 WebView 中我还注入了一个接口(参见JavascriptInterface),这样我就可以使用 Javascript 来触发可以操作 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 开始闪烁。一根柱子你已经看得很清楚了,但是这 9 根柱子就很糟糕了。

我不知道该怎么办,因为当我不使用 JavaScript 时它可以工作,但是当我使用 JavaScript 时,它会闪烁。

希望有办法解决这个问题。

提前致谢

【问题讨论】:

    标签: javascript android canvas surfaceview flicker


    【解决方案1】:

    我发现了。

    我确实在绘制一个 Rectangle 之前锁定了画布,并在绘制后直接解锁它,因为 SurfaceView 有一些缓冲 (Flickering while using surface view)。

    现在我只在u(t) 函数之前锁定画布,只在它之后解锁它。 这行得通。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-20
      • 2015-12-28
      • 2012-08-27
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      相关资源
      最近更新 更多