• 安卓隐藏状态栏和导航栏


    • 参考代码
    • 设置了 FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS 表明 Window 负责系统 bar 的 background 绘制,绘制透明背景的系统 bar(状态栏和导航栏)
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
    
                val insetsController = this.window.insetsController
                // 隐藏状态栏
                insetsController?.hide(WindowInsets.Type.statusBars())
                // 隐藏导航栏
                insetsController?.hide(WindowInsets.Type.navigationBars())
                // 隐藏标题栏
                supportActionBar?.hide()
                // 设置状态栏是透明的
                this.window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
                // 设置导航栏是透明的
                this.window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION)
    
                this.window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
    
                // 解决隐藏状态栏时,顶部出现黑长条问题,该属性可以让布局内容延伸到状态栏显示
                this.window.attributes.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
            } else {
                this.window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
                this.window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION)
                this.window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN)
                this.window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
            }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 配合onWindowFocusChanged效果更加,可以实现状态栏和导航栏在触摸的时候出现而后自动隐藏
    override fun onWindowFocusChanged(hasFocus: Boolean) {
            super.onWindowFocusChanged(hasFocus)
    
            // 判断是否有焦点
            if (hasFocus && Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
    
                val decorView = window.decorView
                decorView.setSystemUiVisibility(
                    android.view.View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    or android.view.View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                )
    
            }
        }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
  • 相关阅读:
    Java集合和数组的区别
    Android 启动优化案例:WebView非预期初始化排查
    Lumiprobe核酸定量丨QuDye dsDNA BR 检测试剂盒
    Missing artifact org.yaml:snakeyaml:jar:1.29
    R软件和扩展包的升级及R语言数据对象
    【无标题】
    苹果cms翻译插件-免费苹果CMS自动采集翻译
    Hive用户中文使用手册系列(三)
    使用pymodbus进行modbus-TCP通信
    【css】如何实现自定义滚动悬浮置顶、固定表头
  • 原文地址:https://blog.csdn.net/qq_41740004/article/details/133922006