gpt4 book ai didi

android - 在 GLSurfaceView 上覆盖 xml 布局的最佳实践?

转载 作者:行者123 更新时间:2023-11-29 01:46:38 25 4
gpt4 key购买 nike

我正在关注最近一本书(学习用于移动游戏和图形开发的 OpenGL ES)中的示例,那里提出的建议是以编程方式在主要 Activity 中添加一个新布局(我们称之为 settingsLayout),然后:

 LayoutInflater settingsInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View settingsLayoutView = settingsInflater.inflate(R.layout.mySettingsLayout,settingsLayout,false);
settingsLayout.addView(settingsLayoutView);
addContentView(settingsLayout,settingsLayoutParams);

这工作正常,但我已将它添加到我的操作栏菜单项之一的回调中,并且我希望能够在使用后退按钮时删除此 View 。到目前为止,这让我很头疼。

与此同时,似乎实现动态 View (可添加到后台堆栈等)的最自然方式是通过 fragment 。但是, fragment 需要属于布局,目前我的代码直接将 GLSurfaceView 指定为我的主要 Activity 的内容 View ,根本没有使用布局。由于 GLSurfaceView 是 View(而不是 View Group)的子类,我不能用它来生成子项,例如 fragment 。

该书的作者声称这种方法是“圆滑的”,但没有给出将 GLSurfaceView 直接指定为内容 View 的任何其他原因。是否有需要注意的性能问题?还是制作我的 GLSurfaceView 和随后生成的 View 所属的“主”布局一样“圆滑”?

有没有其他更自然的方法让按钮、文本框等在我的 GLSurfaceView 上动态出现和消失?

最佳答案

我不确定您具体的性能问题是什么——渲染 View 对象,还是渲染 GL?您所做的任何事情都不会影响 GL 渲染的性能(除非可能改变窗口的大小)。

SurfaceViewGLSurfaceView 在 View 层次结构中提供了一个透明的“占位符”,供其他元素在计算布局时使用,但实际像素是在单独的图层上绘制的.这就是为什么 SurfaceView 要么在所有 View 元素之后,要么在所有 View 元素之前——图层被传递给系统合成器 (SurfaceFlinger),由它负责生成最终显示图像。

关于android - 在 GLSurfaceView 上覆盖 xml 布局的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21084761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com