在Android Window上获取活动标志

iGi*_*o90 22 flags android window-managers window

是否有可能以编程方式获取Window上当前处于活动状态的标志?

我们可以启用标志:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
Run Code Online (Sandbox Code Playgroud)

api是否提供了获取当前活动标志列表的方法?谢谢

mat*_*ash 55

您可以使用:

int flags = getWindow().getAttributes().flags;
Run Code Online (Sandbox Code Playgroud)

你可以看到它被Window.setFlags()实现使用:

public void setFlags(int flags, int mask) {
    final WindowManager.LayoutParams attrs = getAttributes();
    attrs.flags = (attrs.flags&~mask) | (flags&mask);
    ...
Run Code Online (Sandbox Code Playgroud)

要确定是否设置了单个标志,必须使用按位和.例如:

if ((flags & WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION) != 0) ...
Run Code Online (Sandbox Code Playgroud)

  • 是的,但它返回给我一个不关心任何东西的 int...:S (2认同)
  • @ iGio90 int包含您的所有标志。您只需要按位操作来提取它们。编辑答案,检查示例。 (2认同)