1

我在该表面视图周围有红色,渲染速度更快,但比视图占用更多资源。

从我的测试中,我尝试了这段代码:

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    canvas.drawColor(Color.WHITE);
    Log.i("OnDraw","ping");
    invalidate();
}

一个是表面视图类渲染,另一个是视图类渲染,两者都有相同的代码。从日志聊天中,我可以看到来自 Log.i 方法的消息在视图类中刷新得更快——每个之间大约有 70 毫秒的延迟,而在 SurfaceView 的情况下,它刷新得更慢——大约 100 毫秒每个人之间的延迟。

所以......什么给了?

4

2 回答 2

1

SurfaceView 的主要优点是可以从不同的线程对其进行绘图。因此,对于实时游戏,您肯定会需要 SurfaceView 甚至 GLSurfaceView。对于纸牌和多米诺骨牌等游戏,视图可能与非游戏应用程序相同

关于绘图机制,我相信没有什么能让 SurfaceView 更快,尽管因为普通视图只能从 UI 线程更新 SurfaceView 通常是唯一的选择。

于 2012-09-20T20:33:33.503 回答
0

在真实手机上调试相同的代码后,我可以说视图和表面视图的刷新速度没有明显的明显差异,虽然比模拟器有很大的改进,但它们都刷新了大约 20 毫秒.

于 2012-09-20T20:52:58.820 回答