前言
NavigationBar
就是手机底部的虚拟导航按键,在华为和小米手机上很常见;
Android
状态栏的处理跟导航栏的处理极其相似,所以文章主要介绍状态栏的处理,需要了解导航栏方面的可以对照状态栏处理看代码进行了解即可,代码在Andme
库中已提供;
Android
状态栏对整个App
而言是非常重要的,直接影响App
的展示效果,市面上相关文章和第三方库也非常之多,但质量参差不齐,代码差异化也严重,容易搞得大家云里雾里,甚至一些star比较高的库,其可读性和质量似乎也有待提高;
加之之前曾对这一块的内容做过了解,此次重构Andme
时也需要支持状态栏和导航栏的处理,但是却发现自己曾经所做的了解,早已烟消云散,好像自己对此一无所知;俗话说好记性不如烂笔头,特写此文以便未来再次需要了解相关模块时可以作为参考;
状态栏的发展经历过几大阶段,在4.4之前是无法操作状态栏的,可能国内部分厂商有提供相关功能支持。4.4开始官方提供栏状态栏的相关操作,之后5.0进行了完善,6.0做了补充,所以我们主要讲讲4.4、5.0、6.0这三个阶段。
4.4
4.4版本提供的状态栏功能不是很完善,加上目前4.4版本的手机市场占有率不高,基于这两点个人建议可以放弃4.4版本的状态栏支持。
4.4开始,官方提供了透明系统状态栏和沉浸式全屏模式两个概念,官方资料链接[1],本文只讲状态栏相关的内容(其实状态栏跟沉浸式息息相关);
简单来说,这个版本提供的功能,就是可以将布局内容延伸到状态栏的下面(即状态栏覆盖布局内容),除此之外别无其他,现在市面上的七七八八的各种花里胡哨的功能支持,其实都是经过了二次处理实现的,也正是如此,弄的五花八门,质量参差不齐。
将布局内容填充在状态栏之下有3种方式,其中第一种和第二种方式算是同一种原理的不同形式而已;
1、使用官方提供的新的主题(Deprecated)
使用新的主题Theme.Holo.NoActionBar.TranslucentDecor
和 Theme.Holo.Light.NoActionBar.TranslucentDecor
将系统状态栏设置为部分透明;