如何使用Android SurfaceView实现每秒30帧?

ace*_*ace 5 android surfaceview

我正在寻找示例代码示例,演示如何使用Android SurfaceView实现每秒30帧?假设每个帧从位置x和y开始绘制一个圆,并且每个帧将x和y递增1.

奖金问题:除此之外,我想覆盖另一个视图以显示文本内容,以便绘制任何图形显示在此文本内容下方.怎么做到这一点?

And*_*ite 6

如果你想要高帧率,你真的需要阅读GLSurfaceView.在正常的表面视图下,您将受费用布局计算和以CPU为中心的渲染的支配.使用GLSurfaceView,您可以将其卸载到GPU并对布局进行严格有效的控制.


hac*_*bod 3

创建一个每秒执行 30 次的线程:

  1. 调用SurfaceHolder.lockCanvas()。
  2. 绘制到画布中(必须完全重绘所有像素)。
  3. 调用 SurfaceHolder.unlockCanvasAndPost()。

事实上,如果您的线程只是坐在那里执行此操作而不尝试暂停,它将被限制为屏幕的帧速率。

您需要确保该线程与表面视图的管理正确同步 - 例如,如果表面正在更改或被破坏,您的代码应与线程同步,以确保线程在发生这种情况时停止运行。

当然,这确实意味着您正在画布中进行软件渲染。根据您正在做的事情,这可能可以为您提供 30fps 的动画。如果没有,您将需要使用 GLSurfaceView。无论如何,您可能要考虑使用它,因为它会为您处理线程部分。