如何使用 Android 的“Surface”类?

Posted

技术标签:

【中文标题】如何使用 Android 的“Surface”类?【英文标题】:How do I use Android’s “Surface” classes? 【发布时间】:2014-06-18 08:22:45 【问题描述】:

Surface、SurfaceHolder、EGLSurface、SurfaceView、GLSurfaceView、SurfaceTexture、TextureView有详细解释吗?特别是:

SurfaceView 和 TextureView 有什么区别? 是否需要使用 GLSurfaceView 才能使用 OpenGL ES? Surface 和 EGLSurface 如何交互? SurfaceTexture 有什么作用? 为什么我在 SurfaceView 上绘制的内容必须高于或低于其他所有内容? 什么是 SurfaceFlinger? 状态栏和导航栏的组合如何工作? 在此过程中,在 android 上构建游戏循环的正确方法是什么?

【问题讨论】:

【参考方案1】:

现在可以在 Android 开源项目网站上找到这些问题和许多其他问题的答案:

Android System-Level Graphics

该文档首先解释了低级基础架构,然后解释了如何从它们构建更高级别的功能。我们的目标不是为常见问题提供直接答案,而是详细描述系统,使答案显而易见,不会让人不知所措。

材料的选择和细节水平受到***问答的严重影响。

(从技术上讲,这是一个仅限链接的答案,但在这里写 10,000 个单词似乎是个坏主意。)

【讨论】:

我喜欢问题和回答写在同一分钟。 谢谢,我不知道它是成立的。但我更惊讶的是 0 分钟的延迟。 你好法登!感谢您的精彩写作。我可以问一个简单的问题吗?是否可以截取 SurfaceView 的屏幕截图?我一直在寻找这个,但到目前为止似乎我不能......我不希望你在这里解释如何做到这一点,但我只是想知道是否真的有任何方式像在正常情况下调用draw()观看次数。

以上是关于如何使用 Android 的“Surface”类?的主要内容,如果未能解决你的问题,请参考以下文章

Android应用中如何创建并使用Surface

Android--SurfaceView使用详解

Android View显示流程

如何避免在类蠕虫游戏中每帧复制关卡 Surface?

如何解决`E Qt JAVA:找不到Surface 1-通过意图恢复到Qt @ android应用程序时出错?

使用 MediaCodec 和 Surface 进行 Android 编码