古いフラグを新しいフラグで置き換えるsetFlagsの機能を知っています。 addFlagsはさらにフラグを追加しています。私はちょうど私が通常同じ見たsetFlagsメソッドの引数がなぜ混乱しているのですか?たとえば :android.view.Windowクラスを見てとった後android.view.Windowクラスの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);
、私はなぜ彼らは多くの二項演算子を行う必要があることを明確に(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 | flag 2);
と
の違いは何ですか//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);
任意の助けいただければ幸いです。
あなたは私にとって素晴らしい教師です。しかし、私はWikiを読んで、あなたの答えを理解することができました。それは私の知識からです。私はまだ少し混乱しています。 2つの異なる引数を持つsetFlagsを使用した例を教えてください。あなたがその事例を説明することができれば幸いです。 –
フラグを簡単にオフにする。 setFlags(0、FOO)はfooをオフにします。 setFlags(FOO、FOO | BAR)はfooとオフバーをオンにします。 –
clearFlags(FOO)の使用は、setFlags(0、FOO)より明確です。 setFlags(FOO、FOO | BAR)がfooとオフバーをオンにする理由をより詳しく説明できますか? setFlags(FOO、BAR)はどうですか? –