经过一番挣扎,我确定 aSurfaceView
不会做我想让它做的事情,即位于某些 UI 元素之上和其他 UI 元素之下。我还发现,将所有 UI 元素绘制到SurfaceView
实际上比我试图替换的多层层次结构要慢得多。因此,我正在尝试View
使用onDraw()
.
我能想到的最简单的方法大致如下:
- 现在测量时间
- 执行有关动画状态的计算
- 称呼
invalidate()
- 绘制动画在
onDraw()
- 返回到 1。
我已经有了一个nextFrame()
函数,SurfaceView
它执行步骤 1 和 2,而绘图函数实际上很简单——一条路径。我可以nextFrame()
打电话invalidate()
,我可以onDraw()
打电话nextFrame()
来表示绘图已经完成,我们准备好下一帧了。不幸的是,我可以想象这会导致问题。
invalidate()
直接调用吗onDraw()
?我需要像中那样实现调用线程SurfaceView
吗?