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