美文网首页
Android View显示流程

Android View显示流程

作者: 浪里_个郎 | 来源:发表于2020-08-08 14:59 被阅读0次

View显示的关键,是我们如何拿到Canvas。Canvas是由Surface提供的,不同的Canvas实例,决定了显示内容使用软件渲染(cpu)还是硬件渲染(gpu)。SurfaceFlinger则负责将不同Surface对应的不同layer进行图层合并。
所有在同一个ViewGroup中的普通View,都会通过唯一的ViewRootImpl实例向同一个Surface实例获取Canvas。SurfaceView具备独立的Surface,该Surface对应为SurfaceFlinger中独立的layer。他们的显示流程是不同的。

1. 普通View获取Canvas

2. 自带Surface的View:SurfaceView获取Canvas

3.总体流程


渲染,即生成RGB、YUV等显示器可显示数据的过程。比如上层通过Canvas画一个矩形,最终需要生成一帧数据;给输入视频加特效;输入的是YUV,希望转为RGB显示;甚至输入的就是YUV,但与显示需要的分辨率不一致。这些场景,都需要将渲染后得到的数据放入Surface的显示Buffer中。

多个layer合成,可以通过GLES合成(也叫Client合成或GPU合成),也可以直接通过HWC进行硬件合成(也叫Device合成)。

相关文章

网友评论

      本文标题:Android View显示流程

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