什么时候是必要的,或者更好地使用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使用更多的资源,所以你不想使用它们,除非你必须。
推荐文章
- 视图绑定-我如何获得包含布局的绑定?
- 在Android Studio中改变矢量资产的填充颜色
- 在构建中编写注释的语法是什么?gradle文件?
- 如何以编程方式添加按钮色调
- 用Android Studio进行调试永远停留在“等待调试器”状态
- Openssl不被视为内部或外部命令
- 无法执行dex:在Eclipse中超过GC开销限制
- 如何以编程方式将视图添加到视图
- 单击url会打开默认浏览器
- 使用Retrofit刷新OAuth令牌,而不修改所有调用
- 多个dex文件定义了landoid /support/v4/accessibilityservice/AccessibilityServiceInfoCompat
- 如何获得动作栏的高度?
- 从活动外部调用startActivity() ?
- createScaledBitmap的过滤器参数做什么?
- 为什么我在使用adb时访问数据文件夹被拒绝?