Android Status Bar的隐藏与浮层效果

Android SystemBar各种风格案例

隐藏Status Bar


StatusBar显示状态

image

StatusBar隐藏状态

image

在Android 4.0和更低版本下

通过Theme主题来直接控制应用程序的StatusBar:

<application
    ...
    android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" >
    ...
</application>

或者,在onCreate()中通过WindowManager设置FLAG_FULLSCREEN标示来实现。注意点:setContentView之前写入。

class MainActivity : AppCompatActivity(), View.OnClickListener {
    private var tag = MainActivity::class.java.simpleName

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        if (Build.VERSION.SDK_INT<16){
              setSystemBarOnLowerVersion()
        }
        setContentView(R.layout.activity_main)
    }

    /**
     * 在4.0 及其以下,设置StatusBar
     */
    fun setSystemBarOnLowerVersion(){
                 window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN)
    }
}

更好的做法是使用 FLAG_LAYOUT_IN_SCREEN 来实现相同效果,还能预防当Statusbar显示与隐藏导致界面布局重新计算大小。

在Android 4.1和更高版本下

在Android4.1及其以上版本,使用setSystemUiVisibility()来控制UI flag,比使用WindManger flag更容易控制。

   /**
     * 全屏,会隐藏StatusBar
     */
    var action_hide_status_bar = View.SYSTEM_UI_FLAG_FULLSCREEN

   /**
     * StatusBar正常隐藏的风格
     */
    fun setStatusNormalStyle(window: Window) {
        var flag =  action_hide_status_bar
        window.decorView.systemUiVisibility = flag
    }

浮层效果:确保StatusBar浮在界面布局之上

   /**
     * 全屏,会隐藏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

    /**
     * 与SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION或者SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
     * 结合使用,确保布局稳定
     */
    var action_stable = View.SYSTEM_UI_FLAG_LAYOUT_STABLE

    /**
     * StatusBar浮层隐藏的风格
     */
    fun setStatusFloatStyle(window: Window) {
        var flag =  action_hide_status_bar or action_hide_status_bar_float or action_stable
        window.decorView.systemUiVisibility = flag
    }

使用View.View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREENView.SYSTEM_UI_FLAG_LAYOUT_STABLE,确保StatusBar能够浮在界面布局之上,也不会产生界面兼容问题。

效果如下

这里写图片描述

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

参考资源

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值