SYSTEM_UI_FLAG_ 效果记录
SYSTEM_UI_FLAG_VISIBLE
系统默认,显示状态栏
SYSTEM_UI_FLAG_LOW_PROFILE
状态栏低亮度,用于游戏、阅读器、视频等,下拉状态栏后恢复原始状态
SYSTEM_UI_FLAG_HIDE_NAVIGATION
单独使用导航栏隐藏
SYSTEM_UI_FLAG_FULLSCREEN
单独使用状态栏隐藏,触摸状态栏后,状态栏会把布局顶下来
SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
保证状态栏不占位
SYSTEM_UI_FLAG_LAYOUT_STABLE
稳定布局,结合其他 flag 使用,保证状态栏和导航栏占位用的
SYSTEM_UI_FLAG_IMMERSIVE
状态栏或导航栏恢复状态后,会被系统强制清理 Flag ,状态栏和导航栏会长显示并遮挡布局
SYSTEM_UI_FLAG_IMMERSIVE_STICKY
区别于SYSTEM_UI_FLAG_IMMERSIVE,状态栏和导航栏显示只显示一小段时间。
SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
浅色背景的状态栏
SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR
浅色背景的导航栏
一些基本使用
全屏显示,状态栏和导航栏不遮挡布局
扫描二维码关注公众号,回复:
11355774 查看本文章
fun showFullScreen(activity: Activity) {
activity.window.decorView.systemUiVisibility = (
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
or View.SYSTEM_UI_FLAG_FULLSCREEN
or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
)
}
设置状态栏透明背景
/**
* 状态栏透明,显示布局颜色
* @param isLight 设置状态栏的深浅状态
*/
fun setStatusBarTransparent(activity: Activity, isLight: Boolean){
var flag = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
if (isLight) {
flag = flag or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
}
activity.window.decorView.systemUiVisibility = flag
activity.window.statusBarColor = activity.resources.getColor(android.R.color.transparent)
}
设置导航栏透明背景
fun setNavBarTransparent(activity: Activity, isLight: Boolean){
var flag = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
if (isLight) {
flag = flag or View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR
}
activity.window.decorView.systemUiVisibility = flag
activity.window.navigationBarColor = activity.resources.getColor(android.R.color.transparent)
}
隐藏导航栏
fun hideNavBar(activity: Activity) {
val flag = (View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION)
activity.window.decorView.systemUiVisibility = flag
}
隐藏状态栏
fun hideStatusBar(activity: Activity) {
val flag = (View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
or View.SYSTEM_UI_FLAG_FULLSCREEN
or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN)
activity.window.decorView.systemUiVisibility = flag
}