前言
在谈及 Android GUI 框架前,先从底层视角梳理一下显示的流程。在 Android 系统中,引入了状态栏、导航栏、壁纸和背景的图层概念,需要把这些图层进行 alpha blending 后显示。
在嵌入式 linux 系统下显示界面,可以直接操作 framebuffer 的内存;但 Android 应用并不能直接操作 framebuffer,应用需要借助 SurfaceFlinger。
SurfaceFlinger 通过 Gralloc HAL 向 ashmem 申请内存,供应用使用。同时使用 OpenGL 和 HardwareComposer 来合成 Surface。