美文网首页工作生活
SurfaceView和GLSurfaceView

SurfaceView和GLSurfaceView

作者: 一川烟草i蓑衣 | 来源:发表于2019-07-01 16:45 被阅读0次

SurfaceView

SurfaceView继承自View,并提供了一个独立的绘图层,你可以完全控制这个绘图层,比如说设定它的大小,所以SurfaceView可以嵌入到View结构树中,需要注意的是,由于SurfaceView直接将绘图表层绘制到屏幕上,所以和普通的View不同的地方就在与它不能执行Transition,Rotation,Scale等转换,也不能进行Alpha透明度运算。

SurfaceView另起一个线程对自己的Surface进行刷新。需要注意的是SurfaceHolder.Callback的所有回调方法都是在主线程中回调的。

SurfaceView、SurfaceHolder、Surface的关系可以概括为以下几点:

Surface就是指SurfaceView所拥有的那个绘图层,其实它就是内存中的一段绘图缓冲区。

SurfaceView是拥有独立绘图层的特殊View,SurfaceView中具有两个Surface,也就是我们所说的双缓冲机制

SurfaceHolder顾名思义就是Surface的持有者,SurfaceView就是通过过SurfaceHolder来对Surface进行管理控制的。并且SurfaceView.getHolder方法可以获取SurfaceView相应的SurfaceHolder。

注:Surface是在SurfaceView所在的Window可见的时候创建的。我们可以使用SurfaceHolder.addCallback方法来监听Surface的创建与销毁的事件。

GLSurfaceView

GLSurfaceView作为SurfaceView的补充,可以看作是SurfaceView的一种典型使用模式。在SurfaceView的基础上,它加入了EGL的管理,并自带了渲染线程,作为GLSurfaceView的Client,只需要将实现了渲染函数的Renderer的实现类设置给GLSurfaceView即可。

相关文章

网友评论

    本文标题:SurfaceView和GLSurfaceView

    本文链接:https://www.haomeiwen.com/subject/yscncctx.html