【发布时间】:2015-01-14 21:10:00
【问题描述】:
我有 GLSurfaceView 和顶部带有按钮的小型 LinearLayout,代表菜单。默认情况下,此布局是隐藏的,当用户点击某个按钮时,它会从屏幕底部(通过 TranslateAnimation)出现。 (也尝试在没有动画的情况下显示 - 没有成功)。
在我能获得的所有设备和模拟器上一切正常。 但是我从用户那里得到了反馈,那个菜单根本没有出现,或者有时它会在点击 5-10 次后出现。
可能由于某些原因,gl 表面呈现在活动层之上,但应该在后面。
已知有问题的设备有Android 4.1.1的华为y300、LG Optimus L5、Galaxy Tab 7.7 SCH-I815,也有很多来自不同设备和Android版本的报告,但无法重现。
设置:
view.getHolder().setFormat(PixelFormat.RGBX_8888);
view.setEGLConfigChooser(8, 8, 8, 8, 0, 0); // alpha set to 8, else crash on Genymotion emulator
// tried to comment 2 lines above - no success
view.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
我尝试了 setZOrderMediaOverlay(true) 和 setZOrderOnTop(false) - 没有帮助。
感谢您的帮助。
【问题讨论】:
-
图层不会随意更改 z 顺序。我的猜测是,这与 GLSurfaceView 层无关,而是与其他未能绘制的 UI 元素有关。如果图层配置错误,菜单将永远不会出现,而不是有时会在多次尝试后出现。您可能应该将注意力集中在动画布局上。
-
我有没有 OpenGL 的模式 - 游戏在通常的视图上渲染到画布上,布局层次完全相同,在这种模式下,在有问题的设备上都可以正常工作。视图也不是动态添加的,只是显示/隐藏,所以 z 顺序没有改变。所以我认为用通常的视图组成 GLSurface 的问题,取决于硬件,我相信。
-
您可能正面临这个问题,您开发的游戏只考虑了一个版本的 open GL。新设备有 2.0 和最新的 3.0 。所以,这可能是您的 GL 无法正常工作的问题。
-
不,我使用的是 GL 1.0。如果请求的版本不受支持,它将根本无法工作。
标签: android android-layout glsurfaceview