Window Flag 含义

Window Flag 含义_第1张图片

简介

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

你可能感兴趣的:(Android开发)