TextureView, SurfaceTexture与Surface的关系

在TextureView中存在一个

private SurfaceTexture mSurface;

成员变量。

可以使用这个SurfaceTexture来构造一个Surface。然后在Surface上可以显示从camera中获取到的流。

android.view.Surface created from a SurfaceTexture can be used as an output destination for the android.hardware.camera2android.media.MediaCodecandroid.media.MediaPlayer, and android.renderscript.Allocation APIs. 

 

TextureView可以用来Captures frames from an image stream as an OpenGL ES texture。The image stream may come from either camera preview or video decode.

 

关于Surface系统,可以参考这篇文章:

https://blog.csdn.net/innost/article/details/47208337。

 

这里冒出来一个Surface类。它是什么?在回答此问题之前,先来考虑这样一个问题:

·  前文介绍的View、DecorView等都是UI单元,这些UI单元的绘画工作都在onDraw函数中完成。如果把onDraw想象成画图过程,那么画布是什么?

Android肯定不是“马良”,它也没有那支可以在任何物体上作画的“神笔”,所以我们需要一块实实在在的画布,这块画布就是Surface。SDK文档对Surface类的说明是:Handle on to a raw buffer thatis being managed by the screen compositor。这句话的意思是:

·  有一块Raw buffer,至于是内存还是显存,不必管它。

·  Surface操作这块Raw buffer。

·  Screen compositor(其实就是SurfaceFlinger)管理这块Raw buffer。

Surface和SF、ViewRoot有什么关系呢?相信,聪明的你此时已经明白些了,这里用图8-5描绘一下心中的想法:
--------------------- 
作者:阿拉神农 
来源:CSDN 
原文:https://blog.csdn.net/innost/article/details/47208337 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

你可能感兴趣的:(Android)