我正在从 Suface、Suface Flinger、SurfaceView、SurfaceHolder 和 Bitmap 的文档中学习。我发现了以下定义:
Surface 表面是像素的集合。Surface 是一个对象,其中包含正在合成到屏幕的像素。你在屏幕上看到的每个窗口(一个对话框、你的全屏活动、状态栏)都有它自己绘制的表面,Surface Flinger 以正确的 Z 顺序将这些渲染到最终显示。一个表面通常有多个缓冲区(通常是两个)来进行双缓冲渲染:应用程序可以绘制它的下一个 UI 状态,而表面抛掷器正在使用最后一个缓冲区合成屏幕,而无需等待应用程序完成绘画。
SurfaceView 此类用于向用户呈现实时相机预览。SurfaceView 是 View 的一种特殊实现,它还创建自己的专用 Surface 供应用程序直接绘制(在普通视图层次结构之外,否则必须为窗口共享单个 Surface)
位图 位图是像素集合的包装器,它只是一个像素数组,具有一些其他方便的功能。
Canvas Canvas 是一个包含所有绘图方法的类。它类似于 Java 中 AWT/Swing 中的 Graphics 类。它具有关于如何绘制、框等的所有逻辑。画布在位图上运行。
但我不清楚SurfaceHolder和SurfaceFlinger,根据上面的定义,位图也是像素和 Surface 的容器。
你能帮我清楚地理解所有这些对象的定义吗?