隐藏状态栏android时一瞥白条(如何使其像Whatsapp状态一样)

时间:2017-08-15 07:26:45

标签: java android android-studio statusbar

我正在使用以下代码隐藏状态栏

if (Build.VERSION.SDK_INT < 16) {
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
} else {
    View decorView = getWindow().getDecorView();
    int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
    decorView.setSystemUiVisibility(uiOptions);
}

虽然有效但

  1. 当活动开始时,它会在顶部显示白色背景,持续几秒钟。有什么办法可以避免吗?
  2. 当您点击状态图片时,是否有人知道如何通过动画(向上移动)隐藏它,如Whatsapp隐藏状态栏?
  3. 如果我显示ProgressDialogAlertDialog,然后将其关闭并返回“活动”,则状态栏将再次显示。如何避免它,以便状态栏始终不可见?

2 个答案:

答案 0 :(得分:0)

  1. 确保在开始新活动后完成上一个活动。如果您在finish()之前致电startActivity(),则可能会出现白屏。 (或)如果启动器活动中出现白屏,则是因为在Android Studio中启用了Insta Run。请参阅link关于Insta Run。

  2. 对于类似动画的应用程序,您必须使用coordinator layoutcollapsing toolbar创建布局。使用parallax scrolling effect,您可以隐藏图像,就像应用程序一样。 有关教程,请参阅此处link

  3. 在调用AlertDialog之后,您的活动是“恢复”,因此只有在打开任何对话框并返回活动时才会隐藏OnCreate()上的状态栏,其中名为OnResume()的super.onResume将调用,基本活动将再次重置。因此,您也可以在OnResume()方法中调用状态栏隐藏方法。

答案 1 :(得分:0)

对于解决此问题的人,请使用以下代码:

if (Build.VERSION.SDK_INT < 16) { getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); } else { View decorView = getWindow().getDecorView(); int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN; decorView.setSystemUiVisibility(uiOptions); }