【Android】沉浸式

有两个地方可以设置相关属性
1.getWindow().getAttributes().fl
2.getWindow().getDecorView().setSystemUiVisibility()
两者作用域不一样
style中设置的属性本质是对windows flag的赋值
主要还是对DecorView的属性进行设置

https://www.jianshu.com/p/e6656707f56c

SystemUI Flag 相关特性详解

1.
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
隐藏系统NavigationBar。
但是用户的任何交互,都会导致此Flag被系统清除,进而导航栏自动重新显示
View.SYSTEM_UI_FLAG_FULLSCREEN
作用是隐藏StatusBar。
此Flag会因为各种的交互(如:跳转到其他应用,下拉StatusBar,弹出键盘)的发送而被系统清除。

2.
View.SYSTEM_UI_FLAG_IMMERSIVE
View.SYSTEM_UI_FLAG_IMMERSIVE
避免某些用户交互造成系统自动清除全屏状态。

3.
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
在不隐藏StatusBar,NavigationBar的情况下,将view所在window的显示范围扩展**

4.
View.SYSTEM_UI_FLAG_LAYOUT_STABLE:
稳定布局。当StatusBar和NavigationBar动态显示和隐藏时,系统为fitSystemWindow=true的view设置的padding大小都不会变化,所以view的内容的位置也不会发生移动。

WindowManager 相关特性详解

1.
WindowMananger.FLAG_TRANSLUCENT_STATUS
WindowMananger.FLAG_TRANSLUCENT_NAVIGATION
半透明

2.
WindowMananger.FLAG_FULLSCREEN
于隐藏StatusBar

3.
用于未StatusBar和NavigationBar设置背景颜色。

4.
getWindow().getAttributes().layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
设置刘海屏水滴屏的适配方式

你可能感兴趣的:(android)