简介
WindowManager.LayoutParams 是用于向WindowManager 描述Window窗口的相关展示策略,它继承自于 ViewGroup.LayoutParams,在我们日常的开发中,肯定会或多或少用到其中的一些主要成员常量,特别是做跟全屏显示相关的业务,譬如视频或者是阅读器,更是会经常用到。这里主要介绍一下,一些常用的Flag 的相关含义,方便开发中使用。
常用Flag
flag | 作用 |
---|---|
FLAG_FULLSCREEN | 设置全屏展示,使用此flag,系统会自动忽略输入法的SOFT_INPUT_ADJUST_RESIZE的特性 |
FLAG_FORCE_NOT_FULLSCREEN | 退出全屏展示 |
FLAG_LAYOUT_IN_SCREEN | 让window占满整个手机屏幕,忽略父窗口的任何显示限制,同时也忽略类似状态栏、导航栏这些装饰 |
FLAG_LAYOUT_NO_LIMITS | 允许window不受手机屏幕大小限制,即可以超出屏幕之外,这种场景可以让部分显示在屏幕之外 |
FLAG_ALT_FOCUSABLE_IM | 主要是用户浮窗和输入法窗口的互斥,如果同时设置了FLAG_NOT_FOCUSABLE选项和本选项,窗口将能够与输入法交互,允许输入法窗口覆盖; 如果FLAG_NOT_FOCUSABLE没有设置而设置了本选项,窗口不能与输入法交互,可以覆盖输入法窗口。 |
FLAG_TRANSLUCENT_NAVIGATION | 设置半透明的导航栏,且不会因为用户操作被清除 |
FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS | 用于设置导航栏和状态栏的背景色,具体通过window.getStatusBarColor和window.getNavigationBarColor返回色值进行设置 |
FLAG_TRANSLUCENT_STATUS | 设置透明状态栏,如果设置了这个,会同时设置view的SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN、SYSTEM_UI_FLAG_LAYOUT_STABLE,也就是能够绘制到状态栏位置 |
使用方式
这些Flag 主要是对Window生效,所以在使用的时候,我们需要先要获取到需要设置flag的window对象。如果是在Activity里面进行设置,直接使用getWindow的方式即可获取到对应的实例,对应的使用方式有以下两种
- 1、调用getAttributes()得到其 WindowManager.LayoutParams,然后进行更改;
Window window = getWindow();
WindowManager.LayoutParams winParams = win.getAttributes();
winParams.flags=winParams.flags|WindowManager.LayoutParams.FLAG_FULLSCREEN;
- 2、调用addFlags(int flags)、setFlags(int flags, int mask)、clearFlags(int flags)方法进行更改
window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
小结
以上只是列出了常用的一些Flag 相关的作用,如果是有一些其他的诉求,可以再看看官方的详细介绍:https://developer.android.com/reference/android/view/WindowManager.LayoutParams