Android View显示流程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android View显示流程相关的知识,希望对你有一定的参考价值。

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

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

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

android开发中imageview能显示gif动画吗

不支持,如果要显式GIF,只能把gif分成一帧一帧的,然后用逐帧动画来操作 参考技术A Android默认是不支持gif格式图片的显示的本回答被提问者采纳

以上是关于Android View显示流程的主要内容,如果未能解决你的问题,请参考以下文章

Android View measure流程详解

Android View绘制流程

Android View绘制流程

Android View 绘制流程(Draw) 完全解析

Android应用层View绘制流程与源码分析

Android视图View绘制流程与源码分析(全)