哈克斯:我怎样才能让android菜单栏保持隐藏

哈克斯:我怎样才能让android菜单栏保持隐藏,android,flashdevelop,haxe,openfl,Android,Flashdevelop,Haxe,Openfl,我正在使用haxe/openfl和FlashDevelopIDE开发一个应用程序。新项目的默认设置带有正确配置的android清单,因此android菜单栏不会显示。但是,当我触摸设备上的任何地方时,它们都会弹出。我怎样才能防止这种情况发生 好的,我找到了系统用来生成应用程序代码的模板GameActivity.java文件,并对其进行了修改,使其包括: @Override public void onWindowFocusChanged(boolean hasFocus) { super

我正在使用haxe/openfl和FlashDevelopIDE开发一个应用程序。新项目的默认设置带有正确配置的android清单,因此android菜单栏不会显示。但是,当我触摸设备上的任何地方时,它们都会弹出。我怎样才能防止这种情况发生

好的,我找到了系统用来生成应用程序代码的模板GameActivity.java文件,并对其进行了修改,使其包括:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);

    if(hasFocus) {
        hideSystemUi();
    }
}

private void hideSystemUi() {
    View decorView = this.getWindow().getDecorView();

    if (Float.valueOf(android.os.Build.VERSION.RELEASE.substring(0, 3))>=4.4){

    decorView.setSystemUiVisibility(
        View.SYSTEM_UI_FLAG_LAYOUT_STABLE
        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
        | View.SYSTEM_UI_FLAG_FULLSCREEN
        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
    }
    else
    {
    decorView.setSystemUiVisibility(
        View.SYSTEM_UI_FLAG_LAYOUT_STABLE
        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
        | View.SYSTEM_UI_FLAG_FULLSCREEN);
    }
}
现在一切都很顺利。将在8小时结束后将此作为答案发布

您将在Android 4.4+上隐藏手动栏和软件按钮。通过View.setSystemMiviability方法设置标志,您已经做到了正确

但是,需要记住的一点是,在沉浸式粘滞模式下,如果使用硬件音量按钮,菜单栏将重新出现。为了防止这种情况发生,您必须使用延迟的Runnable来再次设置沉浸式粘滞模式。您正在使用OpenFL,下面是我在游戏活动中使用的一组修改:

private void setSystemUiVisibility() {
    ::if WIN_FULLSCREEN::
    ::if (ANDROID_TARGET_SDK_VERSION >= 19)::
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        getWindow().getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
            View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
            View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
            View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
            View.SYSTEM_UI_FLAG_FULLSCREEN |
            View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
        );
    }
    ::elseif (ANDROID_TARGET_SDK_VERSION >= 16)::
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
        getWindow().getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
            View.SYSTEM_UI_FLAG_LOW_PROFILE |
            View.SYSTEM_UI_FLAG_FULLSCREEN
        );
    }
    ::end::
    ::end::
}

private final Runnable activateImmersiveMode = new Runnable() {
    @Override
    public void run() {
        setSystemUiVisibility();
    }
};

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
        mHandler.postDelayed(activateImmersiveMode, 500);
    }
    return super.onKeyDown(keyCode, event);
}

@Override protected void onResume() {
    super.onResume();
    setSystemUiVisibility();
    // rest of onResume()
}

@Override protected void onStart() {
    super.onStart();
    setSystemUiVisibility();
    // rest of onStart()
}

遗憾的是,可能无法在清单文件中设置此项。看一看。它是通过“菜单栏”添加到最近的Android API(~4.4)中的。你是说带“主页”按钮的菜单栏吗?是的,我想隐藏所有菜单,包括带“主页”按钮的菜单。我确定这应该是可能的,但如果不是,我也可以确保菜单保持打开。