是否有人知道如何使用libgdx
全屏显示,其中Nexus等设备上的虚拟主页按键也不可见?
答案 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()
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()
上执行。