View 是 Android 应用开发的基本 UI 元素,每一个 UI 控件,如按钮、文本框、图片等,都是 View 的子类。它是所有 UI 操作的“最上层组件”。
TextView、Button 等控件。View 管理自己的布局、测量、绘制等,通常用 Canvas 对象进行绘制。View 负责展示界面内容,并处理用户的点击、滑动等交互。Surface 是一个 底层显示接口,它是 Android 系统与硬件显示设备的中介,负责将图像数据传递到屏幕,并管理 GPU 渲染结果的显示。
Surface 通常由 SurfaceView 或 SurfaceTexture 提供,它本身是一个 缓冲区,可以被应用或系统用于显示。Surface 是 UI 层和硬件显示之间的桥梁。Surface 实现。NDK 是 Android 提供的 原生开发工具包,用于开发高性能的 C/C++ 代码。它主要用来处理需要底层硬件加速、图形渲染、音视频解码等的任务。
NDK 可以让开发者编写高效的原生代码,并与 Java 层的代码进行交互。NDK 允许应用与 操作系统核心功能(例如直接操作硬件、访问底层图形接口等)进行交互。NDK 是通过 底层渲染 API(如 OpenGL 或 Vulkan) 来直接操作 GPU 和显示设备的接口。Flutter 的渲染过程由以下几部分构成:
Flutter 引擎是 所有 Flutter 应用的心脏,负责将 Flutter 层的 Widget 构建成最终可以显示的图形内容。它管理渲染管道,并通过 Skia 来完成实际的图形渲染。
Skia 是 Flutter 使用的图形库,它负责:
在 Flutter 中,Surface 是最终显示内容的承载者。Flutter 在渲染过程中,会使用 Skia 渲染图形,然后通过 Surface 将这些图形显示到屏幕上。
Surface 来与底层操作系统(Android 或 iOS)通信。Surface 上,然后由系统交给 GPU 进行显示。Flutter 引擎通过 Skia 渲染图形,并将这些图形数据放入到 Surface。Surface 将图形数据传递给 GPU,由 GPU 来渲染到显示屏。
SurfaceFlinger 是一个系统服务,它负责 合成所有屏幕上的图层。SurfaceFlinger 交互,将渲染的图像传递给它,然后由 SurfaceFlinger 将它们合成到显示屏上。View:在 Flutter 中,View 是平台视图(Platform View)的表现形式,它指的是通过 Flutter 的 Platform Views 实现的原生控件渲染。例如,在 Flutter 中嵌入原生 Android 的 TextView 或 iOS 的 UILabel,这些原生控件的展示就是基于原生平台的 View 系统。
Surface:Flutter 的图形渲染最终会通过 Surface 展示在屏幕上。Surface 提供了一个 显示缓冲区,将 Skia 渲染的内容传递给 GPU,通过系统图形服务(如 SurfaceFlinger)显示到屏幕上。
NDK:Flutter 使用 Platform Channels 和 NDK 来调用底层原生图形 API(如 OpenGL / Vulkan / Metal),这允许 Flutter 高效地与平台的硬件进行交互,进行图形渲染、视频处理等操作。
| 概念 | Flutter | Android/NDK |
|---|---|---|
| View | Widget(Flutter 的 UI 组件) | 控件,如 TextView、Button |
| Surface | Skia 渲染结果的显示缓冲区 | Surface 视图缓存区 |
| NDK | 通过 Platform Channels 使用原生 API | 直接使用 C/C++ 编写原生代码,调用底层硬件接口 |
SurfaceFlinger 负责合成多个图层,最终显示在屏幕上,而 Flutter 只需操作 Surface 与 GPU 进行交互。Surface 是 Flutter 与底层操作系统的桥梁,最终通过 GPU 完成显示。