答案:
1)从GLSurfaceView的源代码开始,将文件命名为GLTextureView.java。
2)更改标题为:GLTextureView extends TextureView implements SurfaceTextureListener
3)将构造函数重命名为GLTextureView。删除init()方法中的代码。
4)组织import语句。始终选择非GLSurfaceView选项。
5)查找每个SurfaceHolder实例,并将其更改为SurfaceTexture。
6)为SurfaceTextureListener添加未实现的方法,每个方法应如下所示:
- onSurfaceTextureAvailable - surfaceCreated(surface)
- onSurfaceTextureDestroyed - surfaceDestroyed(surface),(返回true)
- onSurfaceTextureSizeChanged - surfaceChanged(surface, 0, width, height)
- onSurfaceTextureUpdated - requestRender()
7)应该有一行调用getHolder()的代码,将其更改为getSurfaceTexture()。
8)在init()方法中,加入以下行:setSurfaceTextureListener(this)
然后添加一个OnLayoutChangeListener
并使其调用surfaceChanged(getSurfaceTexture(), 0, right - left, bottom - top)
。
这样你就能够用GLTextureView
替换你的GLSurfaceView代码,获得GLTextureView
的好处。同时,请确保你的应用程序支持硬件加速,并且你的Renderer扩展GLTextureView
.Renderer。