Android SystemUI setSystemUiVisibility()参数Flag详解

Android SystemUI setSystemUiVisibility()参数Flag详解_第1张图片

1:相关 Flag 特性详解 

View.SYSTEM_UI_FLAG_LAYOUT_STABLE

特性:默认状态下 ,稳定页面显示布局。

  StatusBarNavigationBar动态显示和隐藏时,系统为 fitSystemWindow=“true”view设置的padding大小都不会变化,所以view布局的位置也不会发生移动。当使用SYSTEM_UI_FLAG_LAYOUT_FULLSCREENSYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION),同时view设置fitSystemWindow=true时,系统会为此View自动设置padding,此padding的大小由View.fitSystemWindows(Rect)Rect提供。

  一般情况下,当StatusBarNavigationBar显示时,paddingTop的大小为StatusBar的高度。

  StatusBarNavigationBar被隐藏时,ViewpadingBottompaddingTop的大小就变成了0,因此StatusBarNavigationBar的显示和隐藏造成的padding变化,进而View内容的位置变化,从而造成应用显示位置闪动的问题,影响使用体验。

  使用SYSTEM_UI_FLAG_LAYOUT_STABLE的作用,就是当StatusBarNavigationBar的显示和隐藏,系统为View设置的padding都不会变化,因此View内容的位置不会变化,此即为稳定页面显示的布局。

  当设置 SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_LAYOUT_STABLE时, 会同时隐藏 StatusBar 和应用内的 Actionbar ,但StatusBar所占空间不会隐藏,只会变成空白。同时View所在window的显示范围也不会伸展到StatusBar所占空间。这时,如果是加上SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN属性,View所在window的显示范围,则会伸展到 StatusBar所在的空间。同样对 NavigationBar如此操作,也会是一样的效果。

2:相关 Flag 特性详解 

View.SYSTEM_UI_FLAG_FULLSCREEN

特性:隐藏SysmteUI系统界面StatusBar

  这属性与 WindowManager.LayoutParams.FLAG_FULLSCREEN有相同视觉效果。不同点在于,此Flag一般用在暂时需要全屏的情形(如:阅读应用,全屏视频等),以便让用户的注意力暂时集中在内容上,而如果只是简单的需要一直停留在全屏状态(如:游戏应用),使用WindowManager.LayoutParams.FLAG_FULLSCREEN则是更好的选择。

  Flag也会因为各种的界面交互(如:跳转到其他应用、 下拉StatusBar、弹出键盘等)的触发而被系统清除,退出全屏显示StatusBar

View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

特性:在不隐藏StatusBar的情况下,将View所在Window的显示范围扩展到StatusBar下。同时,应用界面部分内容被StatusBar覆盖遮挡。

  当使用此Flag时,设置fitSystemWindow=trueview,会被系统自动添加大小为statusBarActionBar高度之和相同的paddingTop。当window设置WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS时,此Flag会被系统会自动添加。

3:相关 Flag 特性详解 

View.SYSTEM_UI_FLAG_HIDE_NAVIGATION

特性:隐藏SysmteUI系统界面NavigationBar

  此时用户的任何界面交互,都会导致此Flag被系统清除,进而导航栏自动重新显示,同时 View.SYSTEM_UI_FLAG_FULLSCREEN 也会被自动清除,因此 StatusBar也会同时显示出来。

View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION

特性:在不隐藏导航栏的情况下,将Activity的显示范围扩展到导航栏底部。同时Activity的部分内容也因此被NavigationBar覆盖遮挡。

  当使用此Flag时,设置fitSystemWindow=trueview,会被系统自动添加大小为NavigationBar高度相同的paddingBottom。当window设置WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION时,此Flag会被系统会自动添加。

 

4:相关 Flag 特性详解 

View.SYSTEM_UI_FLAG_IMMERSIVE

特性:避免某些用户交互造成系统自动清除全屏状态。

  View.SYSTEM_UI_FLAG_IMMERSIVEView.SYSTEM_UI_FLAG_IMMERSIVE_STICKY的使用主要是为了当设置全屏模式时,避免某些用户交互造成系统自动清除全屏状态。当使用View.SYSTEM_UI_FLAG_HIDE_NAVIGATION隐藏导航栏时,配合此特性,只有第三、四种操作会导致导航栏的隐藏状态被系统自动清除;否则,任何交互都会导致导航栏的隐藏状态被系统自动清除。此标识只有配合View.SYSTEM_UI_FLAG_HIDE_NAVIGATION才有作用

View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY

特性:避免某些用户交互造成系统自动清除全屏状态。同时Activity的部分内容也因此被StatusBar覆盖遮挡

  View.SYSTEM_UI_FLAG_HIDE_NAVIGATION隐藏导航栏,配合使用此Flag,只有用户的第四种操作会导致状态栏或(和)导航栏的隐藏状态被系统自动清除。否则任何交互都会导致相应状态的清除。此Flag只有配合SYSTEM_UI_FLAG_FULLSCREENSYSTEM_UI_FLAG_HIDE_NAVIGATION使用时才会起作用。

你可能感兴趣的:(1024程序员节,systemui,FULLSCREEN,状态栏,导航栏,Android)