【问题标题】:Whats the best way to switch between a normal view and a GLsurface view, Android什么是在普通视图和 GLsurface 视图之间切换的最佳方式,Android
【发布时间】:2014-03-27 19:36:49
【问题描述】:

我目前正在制作一个游戏,游戏有一个开始屏幕和主游戏屏幕。

我的问题是在两种视图之间切换的最佳方式是什么。

开始屏幕仅包含几个按钮,其中一个是“开始游戏”,单击此按钮时将创建 GLsurface 视图。

如果我在开始时创建 GLsurface 视图并在此处绑定渲染器,则 GL 表面视图中的任何内容都会显示在启动屏幕的顶部。

我想我可以创建一个默认为开始屏幕的 viewflipper,然后在开始按钮的 onclick 方法中创建 glsurface 视图,但这似乎不喜欢在其中包含 GLsurface 视图。

viewFlipper 是否支持 Glsurface 视图或有更好的解决方法。

谢谢。

【问题讨论】:

  • Android Breakout (code.google.com/p/android-breakout) 使用两个活动来执行此操作,尽管听起来您想要更生动的东西。请记住,GLSurfaceView 有两个组件,透明的 View 部分和单独合成的 Surface,因此为 GLSurfaceView 的视图设置动画可能不会产生您想要的效果。
  • @fadden 感谢您的建议,我相信还有其他方法可以做到这一点,但您的建议效果很好。写一个更详细的答案,我会接受它。这样做时要注意的另一件事是,如果您在两个活动之间不断地返回和第四个,则可以为每个活动创建多个实例。我需要检查我没有这样做。
  • 完成。还添加了有关 TextureView 的注释。

标签: java android opengl-es rendering surfaceview


【解决方案1】:

最简单的方法是使用两个活动,然后在它们之间切换。

这里的麻烦是ViewFlipper只能影响GLSurfaceView的“视图”部分,这只是一个透明的洞。发生 GL 渲染的表面是单独合成的,在带有视图内容的图层后面,所以cannot be animated 是这样的。

Android Breakout 中可以找到在 GL 游戏中使用两个 Activity 的示例,它使用一个 Activity 进行配置和“启动”,另一个用于游戏本身。

如果你真的想要ViewFlipper 动画,你可以渲染成TextureView,但你的应用必须处理GLSurfaceView 为你做的许多事情。 TextureView 的效率也低于 SurfaceView

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多