Android状态栏&导航栏使用总结

Android状态栏&导航栏使用总结

1.概述

在我们的日常开发中,我们会有很多使用场景需要对状态栏 or 导航栏的可见性、背景颜色、图标颜色等方面进行控制,以达到更好的视觉效果。比如当我们全屏播放视频时,我们会将导航栏和状态栏隐藏;亦或者是当实现App全局状态栏沉浸效果时,我们会让布局内容延伸到状态栏。
总体来讲状态栏和导航栏的控制方法大致相似,但是部分方面也稍有区别,下文我们将两者控制方式总结如下。

2.用法

我们通过表格对状态栏和导航栏控制的相似之处进行汇总。

控制点 状态栏 导航栏 备注
完全隐藏 View # setSystemUiVisibility
SYSTEM_UI_FLAG_FULLSCREEN
View # setSystemUiVisibility
SYSTEM_UI_FLAG_HIDE_NAVIGATION
布局延伸 View # setSystemUiVisibility
SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
View # setSystemUiVisibility
SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
为避免页面内容被遮挡,我们可以考虑向 XML 布局文件添加 android:fitsSystemWindows 属性并设置为 true,系统将自动向布局的父布局添加对应bar的高度的padding。
背景颜色 Window # setStatusBarColor Window # setNavigationBarColor 目前Android只支持设置为黑色或者白色
图标颜色 View # setSystemUiVisibility
SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
View # setSystemUiVisibility
SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR
(亮色模式:图标为黑色)
清除标记即可进入暗色模式

Notes

1.通过View # setSystemUiVisibility改变状态栏或者导航栏状态后,当我们离开对应Activity时,这些改变会丢失,因此当我们重新回到此Activity时,我们应该在onResume 或者 onWindowFocusChanged中重新设置需要的状态。

3.资料

1.Android官方文档 # 隐藏状态栏
https://developer.android.google.cn/training/system-ui/status#java

1.Android官方文档 # 隐藏导航栏
https://developer.android.google.cn/training/system-ui/navigation

你可能感兴趣的:(Android状态栏&导航栏使用总结)