使用libgdx在Nexus设备上实现全屏

3

有人知道如何在使用 libgdx 时全屏显示吗?同时,在 Nexus 等设备上,虚拟 Home 键按钮也不可见吗?

4个回答

21

如果有人像我一样在寻找简单的解决方法,您可以使用以下方法

config.useImmersiveMode = true;

在4.4及以上版本上,可以通过对AndroidApplicationConfiguration对象进行设置,在隐藏状态栏的同时隐藏软键盘。

更新:此代码行应放置在android/src/YOUR/PACKAGE/PATH/android/AndroidLauncher.java文件中。


酷,有机会我会尝试一下。 - Angel.King.47
到底是哪个文件? - MilanG
1
@MilanG android/src/YOUR/PACKAGE/PATH/android/AndroidLauncher.java 已添加到答案以提高可见性。 - Tomas D Celaya

2

libgdx会默认通过AndroidApplicationConfiguration#hideStatusBar为您执行此操作。但是,您仍然可以设置为全屏模式。

在Android游戏项目的主活动类中:

public class MainActivity extends AndroidApplication {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
         requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
        AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
        //cfg.hideStatusBar = true; //set to true by default


if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){
getWindow().getDecorView().setSystemUiVisibility(View.STATUS_BAR_VISIBLE);
getWindow().getDecorView().setSystemUiVisibility(View.STATUS_BAR_HIDDEN);
}
            initialize(new MainClass(), cfg);
        }
    }

我发现一个错误,即从锁定屏幕恢复后状态栏上的按钮变得可见。解决方法是使用处理程序(setOnSystemUiVisibilityChangeListener)监听系统UI可见性的变化,如果UI变得可见,则重新隐藏UI,或者在隐藏之前显示状态栏,就像我上面所做的那样。
此外,View.STATUS_BAR_HIDDEN (API v11) 已更名为 View.SYSTEM_UI_FLAG_LOW_PROFILE (API v14),可以将虚拟导航按钮转换为点。但是,两者都映射到相同的常量0x1。另外,一旦再次触摸屏幕,按钮将变得可见。
如果您想完全删除状态栏,请使用 View.SYSTEM_UI_FLAG_HIDE_NAVIGATION (API v14) 和 Build.VERSION_CODES.ICE_CREAM_SANDWICH

0

尝试了很多方法,只有这段代码对我有效:

...

      AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
        cfg.useGL20 = false;
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        View decorView = getWindow().getDecorView();


     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);


     initialize(new Soldiers(), cfg);

这是MainActivity.java的一部分,可能也应该在onResume()上执行。


0
您应该在onResume()中设置System Ui Visibility。
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接