我正在使用Android应用。我有一个main_activity,它显示了一个UI屏幕。 我使用以下代码隐藏了此活动的导航栏和状态栏: -
decorView = getWindow().getDecorView();
final int flags = 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;
// This work only for android 4.4+
getWindow().getDecorView().setSystemUiVisibility(flags);
// Code below is to handle presses of Volume up or Volume down.
// Without this, after pressing volume buttons, the navigation bar will
// show up and won't hide
decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
if((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0)
{
decorView.setSystemUiVisibility(flags);
}
}
});
很好用。当我启动我的应用程序时,我的main_activity被调用,它会全屏启动应用程序。但是当它启动时,STATUS_BAR和NAVIGATION_BAR会暂时显示,然后它们会被隐藏。 这对于main_activity来说没问题。
但现在我的主要活动启动了另一项活动。 基本上我点击我的应用程序中的设置按钮,它启动一个新的活动。 这项新活动也需要全屏显示。所以我使用上面提到的代码片段使其全屏显示。 它全屏显示。但是NAVIGATION_BAR和STATUS_BAR再次暂时显示出来。从用户的角度来看,这不是好事。因为我的main_activity已经隐藏了BARS,所以新活动甚至不应该暂时显示它们。
我不知道如何实现这一目标。非常感谢您的帮助。 提前致谢。
以下是我发布new_activity的方法: -
private void shownewscreen() //new screen is basically setting screen
{
Intent intent = new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setClass(this, newscreen.class);
startActivity(intent);
}
我在新活动的onCreate方法中使用以下代码来隐藏两个条: -
protected void makeWindowWithoutStatusNaviBar(){
decorView = getWindow().getDecorView();
final int flags = 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
| View.STATUS_BAR_HIDDEN;
// This work only for android 4.4+
// Code below is to handle presses of Volume up or Volume down.
// Without this, after pressing volume buttons, the navigation bar will
// show up and won't hide
decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
if((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0)
{
decorView.setSystemUiVisibility(flags);
}
}
});
在Windows上,焦点更改我也在新活动中使用以下代码: -
onWindowFocusChanged(hasFocus) {
super.onWindowFocusChanged(hasFocus);
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_STICKY
| View.STATUS_BAR_HIDDEN);
}