WindowManager全屏窗口
在手机或者车机开发中,有时需要弹出一个全屏的窗口,覆盖整个屏幕
参考:
WindowManager.LayoutParams
设置
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
//宽度和高度MATCH_PARENT
layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
layoutParams.height = WindowManager.LayoutParams.MATCH_PARENT;
layoutParams.format = PixelFormat.TRANSPARENT;
layoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
//弹窗全屏
layoutParams.flags = WindowManager.LayoutParams.FLAG_FULLSCREEN
| WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
| WindowManager.LayoutParams.FLAG_DIM_BEHIND;
return layoutParams;
View页面也需要设置属性:
//全屏布局
int flag = View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
view.setSystemUiVisibility(flag);
隐藏NavigationBar
Don not use
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
, this flag will make navigation bar always show. I don’t kown why.
隐藏NavigationBar,注意不要使用 WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
,不知道是为啥
点击事件不生效
view上如果有按钮点击事件,如果设置了WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
后,点击事件就无效了,需要注意下
同时点击无效,还可能与layoutParams.type
有关,在保持其它参数不变的情况下,使用不同的type,也会发现点击事件无效了