什么时候是必要的,或者更好地使用SurfaceView而不是View?


当前回答

视图都绘制在相同的GUI线程上,该线程也用于所有用户交互。

所以,如果你需要快速更新GUI,或者渲染花费太多时间,影响用户体验,那么就使用SurfaceView。

其他回答

以下是我注意到的几点:

SurfaceViews包含一个很好的渲染机制,它允许线程在不使用处理程序的情况下更新表面的内容(对动画很好)。 Surfaceviews不能是透明的,它们只能出现在视图层次结构中的其他元素后面。 我发现它们比渲染到视图上的动画要快得多。

有关更多信息(以及一个很好的使用示例),请参阅SDK中的LunarLander项目 的例子部分。

视图都绘制在相同的GUI线程上,该线程也用于所有用户交互。

所以,如果你需要快速更新GUI,或者渲染花费太多时间,影响用户体验,那么就使用SurfaceView。

SurfaceView是Android中的自定义视图,可用于在其中绘制。 视图和SurfaceView之间的主要区别是视图是在 UI线程,用于所有用户交互。 如果你想要快速更新UI并呈现大量的信息 那么,SurfaceView是一个更好的选择。

但是SurfaceView有一些内部技术:

1. 它们不是硬件加速的。 2. 当您调用invalidate或postInvalidate()方法时,正常视图将被呈现,但这并不意味着视图将被呈现 立即更新(将发送一个垂直同步,由操作系统决定何时 它得到更新。SurfaceView可以立即更新。 3.SurfaceView有一个已分配的表面缓冲区,因此它的开销更大

为什么使用SurfaceView而不是经典的View类…

一个主要原因是SurfaceView可以快速渲染屏幕。

简单地说,SV更有能力管理时间和渲染动画。

为了更好地理解什么是SurfaceView,我们必须将它与View类进行比较。

有什么不同……请看视频中的简单解释

https://m.youtube.com/watch?feature=youtu.be&v=eltlqsHSG30

对于视图,我们有一个主要问题....渲染动画的时间。

通常从Android运行时系统调用onDraw()。

因此,当Android运行时系统调用onDraw()时,应用程序无法控制

显示的时间,这对动画很重要。我们在时间上有差距

应用(游戏邦注:即我们的游戏)和Android运行时系统之间的关系。

SV可以通过专用线程调用onDraw()。

因此:应用程序控制时间。所以我们可以显示动画的下一个位图图像。

主要的区别是SurfaceView可以被背景头绘制,但Views不能。 SurfaceViews使用更多的资源,所以你不想使用它们,除非你必须。