SurfaceView、TextureView、GLSurfaceView 和 SurfaceTexture

485次阅读  |  发布于2年以前

SurfaceView

SurfaceView 是一个可以在子线程中更新 UI 的 View,且不会影响到主线程

它为自己创建了一个窗口(window),就好像在视图层次(View Hierarchy)上穿了个“洞”,让绘图层(Surface)直接显示出来。

但是,和常规视图(view)不同,它没有动画或者变形特效,一些 View 的特性也无法使用。

概括:

GLSurfaceView

GLSurfaceView 继承 SurfaceView,除了拥有 SurfaceView 所有特性外,还加入了 EGL(EGL 是 OpenGL ES 和原生窗口系统之间的桥梁) 的管理,并自带了一个单独的渲染线程。

概括:

SurfaceTexture

Android 3.0(API 11)新加入的一个类,不同于 SurfaceView 会将图像显示在屏幕上,SurfaceTexture 对图像流的处理并不直接显示,而是转为 GL 外部纹理

概括:

TextureView

TextureView 是 Android 4.0(API 14)引入,它必须使用在开启了硬件加速的窗体中。

除了拥有 SurfaceView 的特性外,它还可以进行像常规视图(View)那样进行平移、缩放等动画

概括:

SurfaceView 对比 TextureView

SurfaceView TextureView
内存 较低 较高
绘制 及时 1-3 帧延迟
耗电 较低 较高
动画和截图 不支持 支持

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8