Android透明化和沉浸式状态栏实践及源码分析-创新互联

本文所提到的透明状态栏其实指的是将顶部的导航栏延伸到状态栏,使之浑然一体(Google官方建议状态栏颜色比导航栏的颜色略深一点),并不代表一定不设置背景色,比如导航栏是白色,则可设置状态栏为白色,视情况而定。

创新互联是一家专业提供革吉企业网站建设,专注与做网站、成都做网站HTML5建站、小程序制作等业务。10年已为革吉众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。

相比于iOS系统,Android系统对于状态栏的设置就显得稍微复杂了一点。Android系统提供了API 19以上对状态栏的设置接口,而直到API 23以上才提供对于icon颜色的设置,还有就是各家厂商(如魅族,小米等)对于状态栏的有自己的定制,对于需要使用浅色背景状态栏的应用,没处理好的话往往导致浅色背景,白色icon ,状态栏不分你我的悲剧。。

Android透明化和沉浸式状态栏实践及源码分析

(内心os:嗯?右上角那一个绿色的电池,用户一定知道他是状态栏对吧。)

我随即对比了一些主流app,发现在我的魅蓝2(Android 5.1 Flyme 4.5)上竟然都不支持透明状态栏,这对于我这种追求审美的人(其实是视觉提的需求)来说简直不能忍。在我折腾了几天之后,终于解决了这些问题,希望对大家思路有一些帮助。

言归正传,本文主要针对以下几点进行分析:1.是否隐藏状态栏(全屏模式) 2.状态栏的背景色的设置 3.状态栏icon的颜色的设置,而对于透明状态栏设置过程中,可能造成的icon颜色设置成功,而背景颜色设置失败,等等原因造成的浅色底,浅色字或深色底,深色字等错误情况的处理及兜底方案 4.源码实现。

下面我们就以上几点来讨论一下Android中透明状态栏的实现。

1. 全屏模式(沉浸式状态栏)


这种情况其实用得并不多,基本上使用场景在闪屏页展示广告或logo,以及一些阅读类app需要尽可能的利用到屏幕大小,展示更多的内容。

Android透明化和沉浸式状态栏实践及源码分析

设置方法很简单,分两种,在API > 16时:

theme中定义:将自定义该Activtiy的theme,并在其中添加


true

新闻标题:Android透明化和沉浸式状态栏实践及源码分析-创新互联
URL标题:http://hbruida.cn/article/ccecso.html