使用libgdx在Nexus设备上全屏显示

时间:2014-05-18 22:35:54

标签: android libgdx

是否有人知道如何使用libgdx全屏显示,其中Nexus等设备上的虚拟主页按键也不可见?

4 个答案:

答案 0 :(得分:19)

如果有人发现这个,就像我在寻找简单修复时所做的那样,你可以使用

config.useImmersiveMode = true;

在4.4上的AndroidApplicationConfiguration对象上以及除了状态栏(默认情况下隐藏)之外还隐藏软键。

更新:该行属于android/src/YOUR/PACKAGE/PATH/android/AndroidLauncher.java

答案 1 :(得分: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,如果它变得可见,或者在隐藏它之前显示状态栏,如上所述。< / p>

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

答案 2 :(得分:0)

您应该在onResume()

中设置系统Ui可见性
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);

答案 3 :(得分: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()上执行。