简述SurfceView、GLSurfaceView、SurfaceTexture、TextTureView

简述:

Surfaceview、GlSurfaceView、TextureView本质都是View。
而SurfaceTexture只是一个类

SurfaceView

SurfaceView也是一个View,它也有自己的生命周期。因为它需要另外一个线程来执行绘制操作,所以我们可以在它生命周期的初始化阶 段开辟一个新线程,然后开始执行绘制,当生命周期的结束阶段我们插入结束绘制线程的操作。这些是由其内部一个SurfaceHolder对象完成的

image

GLSurfaceView

可以看作是SurfaceView的一种典型使用模式。在SurfaceView的基础上,它加入了EGL的管理,并自带了渲染线程(Renderer)。用法非常简单,只需要设置Renderer

SurfaceTexture

和SurfaceView不同的是,它对图像流的处理并不直接显示,而是转为GL外部纹理,因此可用于图像流数据的二次处理(如Camera滤镜,桌面特效等)。 例:Camera 把视频采集的内容交给 SurfaceTexture, SurfaceTexture 在对内容做个美颜, 然后SurfaceTexture 再把内容交给 SurfaceView。这就是最后呈现给用户视觉上的美颜内容了。

TextureView

TextureView是在4.0(API level 14)引入的,与SurfaceView相比,它不会创建新的窗口来显示内容。它是将内容流直接投放到View中,并且可以和其它普通View一样进行移动,旋转,缩放,动画等变化。TextureView必须在硬件加速的窗口中使用.TextureView被创建后不能直接使用,必须要在它被它添加到ViewGroup后,待SurfaceTexture准备就绪才能起作用(看TextureView的源码,TextureView是在绘制的时候创建的内部SurfaceTexture,这个就是上面说的可以对图像流数据进行二次处理的类,也就是说一个TextureView就可以实现图片的滤镜效果了。

你可能感兴趣的:(简述SurfceView、GLSurfaceView、SurfaceTexture、TextTureView)