强制android libgdx进入沉浸式模式

时间:2015-04-18 18:27:22

标签: java android libgdx android-xml

按照本页面的教程(2009年编写),不再工作了。 http://www.androidsnippets.com/how-to-make-an-activity-fullscreen

public class FullScreen extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                                WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(R.layout.main);
    }
}

类似地,尝试更改android.xml中的主题无效:android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

以下是截图: enter image description here

在网上搜了几个小时后,我找不到任何可以帮助我的文章。 那么,在libgdx的1.5.4版中,如何获得immersive full screen

---- ---- EDIT 这是现在完全正常运行的代码:

public class AndroidLauncher extends AndroidApplication {
    @Override
    protected void onCreate (Bundle savedInstanceState) {
        hideSystemUi();

        super.onCreate(savedInstanceState);
        AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
        config.hideStatusBar=true;
        config.useImmersiveMode=true;
        initialize(new game(), config);
    }


    private void hideSystemUi() {
        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);
    }
}

2 个答案:

答案 0 :(得分:3)

在android活动中试试这个:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        getWindow().getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
            View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
            View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
            View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
    }
}

请注意,这仅适用于API级别19或更高级别。

答案 1 :(得分:0)

可悲的是,由于我目前的声誉,我无法评论, 但是我发现添加:

{{1}}
AndroidLauncher类中的

足以显示沉浸式应用程序,但应用程序将以标准模式启动,然后更新为沉浸式模式,更多关于Android沉浸式模式的信息:

  

使用SYSTEM_UI_FLAG_IMMERSIVE_STICKY标志时,系统栏区域中的向内滑动会导致条形图暂时显示为半透明状态,但不会清除任何标记,并且不会触发系统UI可见性更改侦听器。短暂延迟后,或者如果用户与屏幕中间进行交互,条形图会自动再次隐藏。

Android sdk page
所以我的结论是config.useImmersiveMode使用粘性标记。

旁注,      @TargetApi(Build.VERSION_CODES.HONEYCOMB) 必须在针对小于11的api lvl时添加到OnWindowFocusChanged方法