WindowInsets
我们能用WindowInsets做什么?
首先,之前第一篇介绍过WindowInsets,它就是一些「系统视图」。那我要它干嘛,我平时开发都是直接xml中或者compose中直接就开始编写contentView了,根本不关心这什么Insets,爱谁谁。
但是当你知道Insets能做的事情,你将会实现更多「牛逼」UI效果了。
多牛逼?
全屏绘制内容
在以前我们绘制全屏内容都需要给Activity设置各种UI的FLAG,以致于UI可以绘制成全屏,然后动态计算一些状态栏的高度等。
现在你有WindowInsets后,只需要一行代码,即可实现。如何实现:
Edge-To-Edge
你可以将部分绘制内容绘制到状态栏下了。
哎,不对哎?这不就是全屏吗?有什么区别?嘻嘻,跟普通全屏来说就不一样了,当你全屏后,你会发现,我的下面的内容被「三大金刚(返回、桌面、最近任务)给挡住了,那我不得不在布局文件做固定的偏移或者代码动态偏移啊」,那我怎么知道是「三大金刚」还是「手势导航」呢?
没错,WindowInsets会告诉你哦~参考:
可以绘制任务状态栏的的风味
例如:
- 全屏
- 滚动的时候可将内容滚动到状态栏
- 滚动的时候部分内容可以滚动到状态栏
- 状态栏的颜色
- 状态栏的内容
- 状态栏反色等
可以说它非常强。上面介绍的比较简单,得先大致了解到它能干什么后,我们继续介绍它怎么做到的啊?