WindowManager
之所以使用WindowManager是因为Dialog、PopupWindow在全屏显示时都会或多或少存在一些问题,解决起来麻烦且并不完美。
直接上代码:
// 初始化
val windowManager = (context.getSystemService(Context.WINDOW_SERVICE) as WindowManager)
// 这里取优先级较低的,避免权限申请和显示层级过高
val windowType = WindowManager.LayoutParams.LAST_SUB_WINDOW
// 参数
val windowParams = WindowManager.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,
windowType,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
or WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
PixelFormat.TRANSLUCENT
)
// 显示
windowManager.addView(view, windowParams)
// 关闭
windowManager.removeView(view)