setFlags가 이전 플래그를 새 플래그로 대체하는 이유를 알고 있습니다. addFlags가 더 많은 플래그를 추가합니다. 난 그냥 setFlags 메서드에서 인수가 일반적으로 동일한 것을 본 이유는 무엇입니까? 예를 들어 는 :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);
android.view.Window 클래스를 살펴 복용 후, 나는 그들이 많은 바이너리 연산자를 수행해야하는 이유 (NOT, AND, OR)를 명확하지 않다. 이것의 목적은 무엇입니까?
//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);
및
,617의 차이가 무엇인지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 the result of AND operator of 2 different flags
getWindow().addFlags(flag1 & flag2);
어떤 도움
//argument is the result of AND operator of 2 identical flags
getWindow().addFlags(flag1 & flag1);
및
을 감상 할 수있다.
당신은 훌륭한 교사입니다. 그러나, 나는 당신의 대답이 이해가 안되기 때문에 wiki를 읽어야했다 :) 나는 아직도 약간의 혼란을 가지고있다. 두 개의 다른 인수가있는 setFlags를 사용하여 예제를 제공 할 수 있습니까? 그리고 그 예를 설명 할 수 있으면 행복 할 것입니다. –
깃발을 쉽게 끄려면. setFlags (0, FOO)는 foo를 끕니다. setFlags (FOO, FOO | BAR)는 foo와 off 막대를 켭니다. –
clearFlags (FOO) 사용은 setFlags (0, FOO)보다 명확합니다. setFlags (FOO, FOO | BAR)가 foo와 off 막대를 켜는 이유를 자세히 설명해 주시겠습니까? setFlags (FOO, BAR)는 어떻습니까? –