沉浸式全屏低于4.4

我有一个应用程序,我想全屏运行。 如果我有一个4.4 KitKat的设备,很容易设置SYSTEM_UI_FLAG_IMMERSIVE使应用程序纯净全屏。 但是,如果我有一个API低于4.4的设备。 我不知道如何使它全屏,好像它是一个Immersive支持的KitKat。

我可以设置全屏,并隐藏导航标记以使应用程序全屏显示,但是一旦点击屏幕,这些标记就会重置,现在将显示导航栏和状态栏。

有没有一个解决方案,我可以在JB和可能的ICS设备上“模拟”沉浸式模式(下面不是必须的)。

我有一个方法hideSystemUI,它在OnSystemUiVisibilityChangeListener触发时运行, OnSystemUiVisibilityChangeListener看起来像这样。

 private void hideSystemUI() { actionBar.hide(); isMenuVisible = false; if (currentapiVersion >= android.os.Build.VERSION_CODES.KITKAT){ mDecorView.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); } else{ mDecorView.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); } } 

我需要进行哪些更改才能使应用程序全屏显示,并且不会在每次点击时显示导航栏和状态栏,而是从顶部或底部显示幻灯片。

这就像你将获得的那样接近:

 if (Build.VERSION.SDK_INT >= 19) { getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); } else { if (Build.VERSION.SDK_INT > 10) { findViewById(android.R.id.content).setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE); } } 

并且不支持SDK小于10的设备。无论如何,这些知识需要得到一个现代的android。

我遇到了同样的情况,经过一些研究后我发现由于安全问题,它不可能低于4.4,所以旧的API不支持隐藏导航栏你想要的方式。 即使从API 4.1中使用SYSTEM_UI_FLAG_LAYOUT_STABLE标志,您的布局也不会resize,它会在导航栏后面膨胀,但您需要确保它不会覆盖任何重要的UI组件。

https://developer.android.com/training/system-ui/immersive.html希望这有帮助.. 🙂

只需将下面的代码复制到value / style.xml中。

     

沉浸式模式有两种方法
为了让它保持身临其境,请改变这条线

 View.SYSTEM_UI_FLAG_IMMERSIVE 

通过这条线 –

 View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY