在一些项目中我们希望全屏显示并且挖孔的那部分也要显示出来,但是有时就是不如意
现在分享一下可以让挖孔区域显示出来的代码
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
val layoutParams = window.attributes
layoutParams.layoutInDisplayCutoutMode =
WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
window.attributes = layoutParams
}
window.decorView.systemUiVisibility = (
View.SYSTEM_UI_FLAG_LOW_PROFILE
or View.SYSTEM_UI_FLAG_FULLSCREEN
or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
)
设置完这些后就可以在挖孔区域展示界面了
更新
以上是以前的写法有些过时了现在给出现在的写法,使用WindowInsetsControllerCompat类来隐藏和展示systembar
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
val layoutParams = window.attributes
layoutParams.layoutInDisplayCutoutMode =
WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
window.attributes = layoutParams
}
val insetsController: WindowInsetsControllerCompat? = ViewCompat.getWindowInsetsController(window.decorView)
insetsController?.hide(WindowInsetsCompat.Type.systemBars());
insetsController?.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE;