我知道 setFlags 的作用是用新标志替换旧标志。并且 addFlags 正在附加更多标志。我只是很困惑为什么我见过的 setFlags 方法中的参数通常相同?例如:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
//or
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
在查看了 android.view.Window 类之后,我不清楚为什么他们必须执行许多二元运算符(NOT、AND、OR)。这样做的目的是什么?
public void setFlags(int flags, int mask) {
final WindowManager.LayoutParams attrs = getAttributes();
attrs.flags = (attrs.flags & ~mask) | (flags & mask);
mForcedWindowFlags |= mask;
dispatchWindowAttributesChanged(attrs);
}
还有一个问题,有什么区别
//argument is a flag
getWindow().addFlags(flag1);
和
//argument is the result of OR operator of 2 identical flags
getWindow().addFlags(flag1 | flag1);
和
//argument is the result of OR operator of 2 different flags
getWindow().addFlags(flag1 | flag2);
和
//argument is the result of AND operator of 2 identical flags
getWindow().addFlags(flag1 & flag1);
和
//argument is the result of AND operator of 2 different flags
getWindow().addFlags(flag1 & flag2);
任何帮助,将不胜感激。