Android GDI 基本框架 在 Android 中所涉及的概念和代码最多,最繁杂的就是 GDI 相关的代码了
但是本质从抽象上来讲,这么多的代码和框架就干了一件事情:对显示缓冲区的操作和管理
GDI 主要管理图形图像的输出,从整体方向上来看,GDI 可以被认为是一个物理屏幕使用的管理器
因为在实际的产品中,我们需要在物理屏幕上输出不同的窗口,而每个窗口认为自己独占屏幕的使用,对所有窗口输出,应用程序不会关心物理屏幕是否被别的窗口占用,而只是关心自己在本窗口的输出,至于输出是否能在屏幕上看见,则需要 GDI 来管理
从最上层到最底层的数据流的分析可以看到实际上 GDI 在上层为 GUI 提供一个抽象的概念,就好像操作系统中的文件系统所提供文件,目录等抽象概念一样,GDI 输出抽象成了文本,画笔,位图操作等设备无关的操作,让应用程序员只需要面对逻辑的设备上下文进行输出操作,而不要涉及到具体输出设备,以及输出边界的管理
GDI 负责将文本、线条、位图等概念对象映射到具体的物理设备,所以 GDI 的在大体方向上可以分为以下几大要素: 画布 字体 文本输出 绘画对象 位图输出 Android 的 GDI 系统 Android 的 GDI 系统所涉及到概念太多,加之使用了 OpenGL 使得 Android 的层次和代码很繁杂
但是我们对于 Android 的 GDI 系统需要了解的方面不是他的静态的代码关系,而是动态的对象关系,在逻辑运行的架构上理解 GDI
我们首先还是需要从代码结构开始我们的理解
Frameworks/Libs/Surfaceflinger Frameworks/base/core/jni/android_view_Surface
cpp Frameworks/base/core/java/android/view/surface
java Frame