在Android窗口中获取活动标志

29

如何以编程方式获取窗口当前激活的标志?

我们可以通过以下方式启用标志:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
API是否提供了一种获取当前活动标志列表的方法? 谢谢
1个回答

78

你可以使用:

int flags = getWindow().getAttributes().flags;

你可以看到它被Window.setFlags()方法使用:

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

要确定个别标志是否设置,必须使用按位与。例如:

if ((flags & WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION) != 0) ...

2
是的,但它返回一个与无关的整数... :S - iGio90
3
@iGio90,整数包含了你所有的标志位。你只需要进行按位运算来提取它们。已经编辑了答案,请查看示例。 - matiash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接