返回

深入Android系统(十二)Android图形显示系统-1-显示原理与Surface

Android

显示原理

Android图形显示系统是一个复杂的系统,它负责将图像数据显示到屏幕上。该系统由多个组件组成,包括:

  • 显示驱动程序: 这是一个软件组件,它负责将图像数据转换为可以由显示硬件理解的格式。
  • Framebuffer: 这是一块内存区域,它通常是显示驱动的内部缓冲区在内存中的映射。一旦用户进程把图像数据复制到Framebuffer中,显示驱动会一个像素一个像素地扫描整个Framebuffer,并将图像数据显示到屏幕上。
  • Surface: 这是一个抽象层,它允许应用程序与显示驱动程序交互。应用程序可以通过Surface来指定要显示的图像数据,以及图像数据应该显示在屏幕上的哪个位置。

Surface

Surface是一个非常重要的概念,它是应用程序与显示驱动程序交互的桥梁。Surface可以被看作是一个虚拟屏幕,应用程序可以通过Surface来指定要显示的图像数据,以及图像数据应该显示在屏幕上的哪个位置。

Surface是由系统创建的,并且与Framebuffer相关联。当应用程序创建一个Surface时,系统会为该Surface分配一个Framebuffer。应用程序可以通过Surface来访问Framebuffer,并将图像数据复制到Framebuffer中。

一旦图像数据被复制到Framebuffer中,显示驱动程序就会扫描Framebuffer,并将图像数据显示到屏幕上。

应用程序如何使用Surface

应用程序可以使用Surface来显示各种类型的图像数据,包括:

  • 位图: 位图是一种图像格式,它使用像素阵列来存储图像数据。位图图像通常是使用画笔工具创建的,或者从其他图像格式(如JPEG、PNG等)转换而来的。
  • 矢量图形: 矢量图形是一种图像格式,它使用几何图形来存储图像数据。矢量图形图像通常是使用绘图软件创建的,或者从其他图像格式(如SVG、EPS等)转换而来的。
  • 视频: 视频是一种图像格式,它使用一系列图像来存储动态图像数据。视频图像通常是使用摄像机拍摄的,或者从其他视频格式(如MP4、AVI等)转换而来的。

应用程序可以使用Surface来显示任意类型的图像数据。只要应用程序能够将图像数据复制到Framebuffer中,显示驱动程序就会扫描Framebuffer,并将图像数据显示到屏幕上。

总结

Android图形显示系统是一个非常复杂的系统,它负责将图像数据显示到屏幕上。该系统由多个组件组成,包括显示驱动程序、Framebuffer和Surface。Surface是一个非常重要的概念,它是应用程序与显示驱动程序交互的桥梁。应用程序可以使用Surface来指定要显示的图像数据,以及图像数据应该显示在屏幕上的哪个位置。