如何抵消GLSurfaceView以考虑状态栏?

时间:2012-08-20 23:13:22

标签: android opengl-es surfaceview glsurfaceview

目前,当我在0,0绘制时,状态栏覆盖了绘图。有没有办法调整曲面的位置,或者我需要建立一个绘制偏移量以考虑状态栏 - 有效地绘制从y = 25开始的所有内容?

4 个答案:

答案 0 :(得分:2)

我不确定为什么surfaceview会重叠状态栏(听起来像是一个机器人的bug),但最简单的事情可能是使用glViewport来定义你想要的surfaceview的哪个区域用于绘图。

如果您可以确定状态栏的高度,那么只需从glViewport调用的高度减去该值,然后所有调用都将映射到视口范围内。

答案 1 :(得分:2)

当我遇到这个问题时,我在Surface的顶部有一个虚拟视图(我使用FrameLayout做了那个),它与ContentView一样大。所以我需要的是致电 View.getLocationOnScreen(int[])以了解我应该从哪里开始绘画。

答案 2 :(得分:1)

您可能需要告诉android您的活动使用哪种主题/风格。

在AndroidManifest.xml中包含以下内容,以了解创建glSurfaceView的活动:

android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"

或者如果你想保留状态栏:

android:theme="@android:style/Theme.Black.NoTitleBar"

以下是有关主题和样式的更多信息:http://developer.android.com/guide/topics/ui/themes.html

修改 这样android在创建glSurfaceView时会(应该)考虑所请求的布局,因此不需要偏移......

答案 3 :(得分:0)

window.clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);