您的位置:首页 > 移动开发 > Android开发

Android SystemBar(Status Bar 和Navigation Bar)设置 Immersive与Sticky Immersion风格

2017-08-25 13:47 375 查看

Android SystemBar各种风格案例

Android System Bar(Status Bar 和Navigation Bar)暗淡效果

Android Status Bar的隐藏与浮层效果

Android NavigationBar隐藏与浮层

Android SystemBar(Status Bar 和Navigation Bar)设置 Immersive与Sticky Immersion风格

Android 响应System UI状态,焦点改变,手势处理

Using Immersive Full-Screen 模式

在Android4.4 (api 19)中出现新
SYSTEM_UI_FLAG_IMMERSIVE
SYSTEM_UI_FLAG_IMMERSIVE_STICKY
的标志,用于实现应用程序去真全屏(go truly “full screen” ).

先来了解下官方中Immersive Full-Screen介绍.

Immersive 各种状态



使用Imnersive模式后,第一次会出现提示框,且这里的system bar 浮现在界面布局之上。

Sticky Immersion状态



使用Sticky Immersion模式后,这里的system bar 浮现在界面布局之上,且过一会儿会自动消失。

4. 1 使用 Non-Sticky Immersion:

使用了SYSTEM_UI_FLAG_IMMERSIVE 标志,再与其他标志一起结合使用,当用户屏幕中滑动,System bar会重新出现。

/**
* 隐藏NavigationBar
*/
var action_navigation_bar_hide = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION

/**
* 全屏,会隐藏StatusBar
*/
var action_hide_status_bar = View.SYSTEM_UI_FLAG_FULLSCREEN
/**
* 系统4.1或者更高版本,可以使StatusBar浮在内容上面,
*
* 与 View.SYSTEM_UI_FLAG_FULLSCREEN效果类似
*/
var action_hide_status_bar_float = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
/**
* 系统4.1或者更高版本,可以让NavigationBar浮在内容上面。
*/
var action_navigation_bar_hide_float = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
/**
* 与SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION或者SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
* 结合使用,确保布局稳定
*/
var action_stable = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
/**
* 系统4.4 出现,该flag可以让触碰屏幕,程序重新出现System bar。
*/
var action_immersive = View.SYSTEM_UI_FLAG_IMMERSIVE

/**
* Immersive风格
*/
fun setImmersiveStyle(window: Window) {
var flag = action_navigation_bar_hide
or action_hide_status_bar
or action_navigation_bar_hide_float
or action_hide_status_bar_float
or action_stable or action_immersive

window.decorView.systemUiVisibility = flag
}


效果如下



4. 2 使用Sticky Immersion模式:

使用了
SYSTEM_UI_FLAG_IMMERSIVE_STICKY
标志,再与其他标志一起结合使用,当用户屏幕中滑动,System bar会重新出现,但过一会儿会自动消失。

/**
* 隐藏NavigationBar
*/
var action_navigation_bar_hide = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION

/**
* 全屏,会隐藏StatusBar
*/
var action_hide_status_bar = View.SYSTEM_UI_FLAG_FULLSCREEN
/**
* 系统4.1或者更高版本,可以使StatusBar浮在内容上面,
*
* 与 View.SYSTEM_UI_FLAG_FULLSCREEN效果类似
*/
var action_hide_status_bar_float = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
/**
* 系统4.1或者更高版本,可以让NavigationBar浮在内容上面。
*/
var action_navigation_bar_hide_float = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
/**
* 与SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION或者SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
* 结合使用,确保布局稳定
*/
var action_stable = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
/**
* 系统4.4 出现,该flag触碰屏幕,可以让系统bar出现,但是一会儿自动消失。Sticky方式
*/
var action_immersive_sticky = View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY

/**
* Sticky风格
*/
fun setStickyStyle(window: Window) {
var flag = action_navigation_bar_hide
or action_hide_status_bar
or action_hide_status_bar_float
or action_navigation_bar_hide_float
or action_stable
or action_immersive_sticky

window.decorView.systemUiVisibility = flag
}


效果如下



本项目案例https://github.com/13767004362/ManageSystemUIDemo

参考资源

官方介绍:https://developer.android.google.cn/training/system-ui/index.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: