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

Android SystemBar各种风格案例

Using Immersive Full-Screen 模式


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

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

Immersive 各种状态

image

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

Sticky Immersion状态

image

使用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

参考资源

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值