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


    • 参考代码
    • 设置了 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
  • 相关阅读:
    JVM 工作原理和流程
    0816学习笔记(常见错误分析)
    安卓期末大作业——售票APP源码和设计报告
    JavaFx学习问题2--音频、视频播放失败情况
    Java基于springboot+vue的游戏物品销售购物商城系统 前后端分离
    十、Redis持久化
    SQL语句之in操作符
    天翼物联发布5G纺织行业定制专网
    [PAT练级笔记] 08 Basic Level 1010
    arc 166 b
  • 原文地址:https://blog.csdn.net/qq_41740004/article/details/133922006