发布网友 发布时间:2022-04-22 22:21
共1个回答
热心网友 时间:2022-04-24 11:32
沉浸和变色,一个很古老的话题了,因为近期在学习Android,外加我个人对UI体验的偏执,把这部分代码也都学习并测试过,纠正了以往错误的观点,也希望能纠正至今为止依旧很多人错误的观点。。
首先,我用中文列出几个概念;“沉浸”(Immersive),“透明”(Translucent),“变色”,“状态栏”(StatusBar),“导航栏”(NavigationBar)。。另外最后还会提到“全屏”之类的。。
简单来说,“沉浸”和“透明”都是Android4.4加入的新特性,也就是判断VERSION.SDK必须大于或等于API 19,调用才会生效,这一点4.4和5.0包括6.0在使用方法及具体实现代码上都没有区别(但显示效果略有区别,原因其一是Android4.4存在上下阴影的影响)。。
设置“透明”主要有两个方法,在xml主题文件里面设置和在源代码里面调用setFlags()方法(这个方法一直都有,只不过“透明”这个flag是4.4才加入进去的),效果一样,代码也很简单,包括“状态栏”和“导航栏”都可以选择透明化。
设置“沉浸”则可以在源代码里面调用setSystemUiVisibility()方法(这个方法也是一直都有,只不过4.4加入了两个新的flag用来获得“沉浸”效果),代码量比设置“透明”略多,但也不过十几行而已。
而“变色”在Android上是从来就不存在的一个概念!!只是大家根据app显示效果自己YY出来的一个词。在API 19(Android4.4)里面,Google仅仅提供了“透明”这个方法,但是很多开发者发现,在开发过程中如果使用的是带有深色ActionBar的主题,这时对“状态栏”的透明会带来极其丑陋不协调的显示效果,像这个样子(图片来源网络,黑色的那一栏就是ActionBar):