2017-11-16 5 views
0

私はjavaで知っている|包括的であることを意味していますが、これは私が実際に使用したことはありませんが、今では私がアプリケーションで使ったこのコードで見ました。なぜそれはこの方法で使用され、それは何ですか?これらのパイプ文字は何ですか?

mDecorView.setSystemUiVisibility(
     View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
     | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
     | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
     | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar 
     | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar 
     | View.SYSTEM_UI_FLAG_IMMERSIVE); 
+0

OR。意味の追加。 –

答えて

3

Inroid API View.setSystemUiVisibility()は、さまざまな表示装飾の可視性を変更するために使用されます。

フラグを使用してさまざまな機能を選択できます。

異なるフラグは異なる意味を持ち、公式ドキュメント:setSystemUiVisibilityに詳細に記載されています。

ビット単位の操作に精通していない場合は、最初にthisにスキミングしてください。

この表記は、単一のマシン語で「設定」を符号化するために使用される非常に一般的な技術である。

View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar 
    | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar 
    | View.SYSTEM_UI_FLAG_IMMERSIVE 
数学

OR-INGのためのユニークな値を生成する1ビットのみが設定されている機械語を2つのユニークなオペランドごとに。したがって、コンポジット値がある場合は、常にを分解して、を生成して元の値に戻すことができます。ビットはオフセットする必要があります。そうしないと、元の値を抽出する方法がありません。

ビットが1つのみの2つのバイナリ値が00010010の場合、OR演算するとバイナリ値0011が生成されます。これで、その機械語を周囲に渡すことができ、必要に応じて元の2つの値に戻すことができます。

:あなたは android docsを開くと

int FLAG1 = 0x1; //0001 
int FLAG2 = 0x2; //0010 
int FLAG3 = 0x4; //0100 
// combine using OR 
int flags = FLAG1 | FLAG3; //==0101 (5) 
// using + is possible as well but can lead to errors: 
// flags += FLAG1 
// flags now is 0110 but you didn't mean to enable FLAG2 
... 
// remove a flag 
flags &= ~FLAG1; 
// toggle a flag 
flags ^= FLAG3 
// decompose 
if(flags & FLAG1) 
{ 
    //we know flag1 was set. 
} 

再びあなたはそれがすべてのフラグ16進で一定の値に言及していることがわかります。

wikipedia記事次の作品がどのように理解することができるはず読んだ後

SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION

...

定数値:私は上記のように、これらが使用されている512(0x00000200)

SYSTEM_UI_FLAG_LAYOUT_STABLE = 0x00000100 (256) 
SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION = 0x00000200 (512) 

value | FLAG要求いくつかの特徴は、value & ~FLAGvalue^FLAGトグルそれ、それをオフにします。

あなたが設定したフラグに基づいて、アンドロイドコードの合成値の深部が分解され、さまざまな機能が有効または無効になります。

関連する問題