Surface Flinger、SurfaceView、Surface、SurfaceHolder和Bitmap是Android中的IT技术相关内容。

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

2

Canvas是使用图形API进行绘图的基本上下文。您可以创建自己的Canvas,将其包装在位图中以进行屏幕外绘制,当然UI框架会将Canvas传递给小部件以便它们将自己绘制到其中。所有这些小部件都是View的子类。或者,如果它们可以包含其他小部件,则从ViewGroup(它是View的子类)中派生。

如果您想进行高帧速率动画,则需要从SurfaceView(或其子类GLSurfaceView,如果您想进行屏幕上的OpenGL-ES渲染)中派生。每个SurfaceView都有一个SurfaceHolder,该SurfaceHolder具有lockCanvas方法,您可以随时调用该方法以获取Canvas,以便绘制更新的显示,并通过unlockCanvasAndPost立即发布供用户查看。

更多信息,请参见2D graphics conceptsCustom widget tips


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接