我正在用Nexus 4 KitKat 4.4开发,并试图将IMMERSIVE MODE
添加到我的游戏中。我需要屏幕高度来正确设置glViewport
。
以前我用过
@SuppressWarnings("deprecation")
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
public static int getScreenHeight() {
if (Main.m_activity == null)
return -1;
Display display = Main.m_activity.getWindowManager()
.getDefaultDisplay();
int height = -1;
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB){
//width = display.getWidth(); // deprecated
height = display.getHeight(); // deprecated
}else{
Point size = new Point();
display.getSize(size);
height = size.y;
}
return height;
}
它不返回IMMERSIVE MODE
中屏幕的真实高度。
因此,我开始使用
private static class Renderer implements GLSurfaceView.Renderer {
public void onSurfaceChanged(GL10 gl, int width, int height) {
当应用程序启动时,它运行得很好。如果我按下“主页”按钮并返回到主屏幕,然后返回到游戏中,onSurfaceChanged
将再次被调用,但与旧的错误值(非沉浸式屏幕大小,更小,规则)。
沉浸式屏幕大小为800x1280常规大小为800x1184。
当我有规律的大小,并设置它在glViewport
,然后我得到黑线在屏幕顶部。
当我按下音量按钮时,PS也会丢失IMMERSIVE MODE
。
PS2
我有下面的方法推动。它无助于处理屏幕/窗口大小调整。
@Override
public void onWindowFocusChanged(boolean hasFocus) {
发布于 2013-12-22 22:50:08
文章写得不错,但还是不够。http://developer.android.com/training/system-ui/immersive.html
现在我们得到屏幕大小
public void onSurfaceChanged(GL10 gl, int width, int height) {
如果高度下降,我们将再次启用沉浸模式,延迟1秒。这是可行的,但哈基和我自己寻找规范的解决方案。
恐怕它只是KitKat中的一辆马车。我没有任何著名的标题,实施沉浸模式。(当然,除了我们的应用程序))
发布于 2013-12-17 15:47:53
使用Display.getRealSize返回不带系统窗口的屏幕边界。
发布于 2013-12-29 10:14:19
在禁用/启用沉浸模式时,可以使用View.OnSystemUiVisibilityChangeListener获得回调。使用它,您可以计算出屏幕的实际高度。
https://stackoverflow.com/questions/20555083
复制相似问题