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);
}
もう1つの質問、違いは何ですか
//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);
どんな助けでも大歓迎です。