最近升级到 API (30) 后发现原本的控制状态栏和导航栏全屏的写法被废弃了。
跳转到源码中查看 setSystemUiVisibility 方法上面的注释,最后的 @deprecated 说明:
从意思上不难看出,官方推荐使用 WindowInsetsController 代替 SystemUiVisibility。
跳转到 WindowInsetsController,其实是一个 interface 接口:
整个 WindowInsetsController 源码内容不多,大家可以慢慢读完。
其中比较重要的控制方法就是 hide 和 show 方法了。(如下图所示)
※ 控制状态栏和导航栏的写法:
我这里是ViewBinding的写法。我将根 View 作为 getWindowInsetsController 传入参数。
还有两个点亮状态栏和导航栏的方法(控制状态栏字体颜色变黑或变白、导航栏)
还是尝试原来的写法,发现原来相应的标签也被废弃了:
采用 WindowInsetsController 的新写法如下: