본문 바로가기
프로그래밍/Android

Android System Bar Hide

by CaffeLatte 2014. 11. 15.

@Override

  public void onWindowFocusChanged(boolean hasFocus) {

    super.onWindowFocusChanged(hasFocus);

    if (hasFocus) {

//      getWindow().getDecorView().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

//          | View.SYSTEM_UI_FLAG_FULLSCREEN 

//          | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY

//          );

    }

  }

  

  public void toggleHideyBar() {


    // The UI options currently enabled are represented by a bitfield.

    // getSystemUiVisibility() gives us that bitfield.

    int uiOptions = getWindow().getDecorView().getSystemUiVisibility();

    int newUiOptions = uiOptions;

    boolean isImmersiveModeEnabled = ((uiOptions | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY) == uiOptions);

    if (isImmersiveModeEnabled) {

      Log.i(Constants.TAG, "Turning immersive mode mode off. ");

    } else {

      Log.i(Constants.TAG, "Turning immersive mode mode on.");

    }


    // Navigation bar hiding: Backwards compatible to ICS.

    if (Build.VERSION.SDK_INT >= 14) {

      Log.i(Constants.TAG, "Build.VERSION.SDK_INT >= 14");

      newUiOptions ^= View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;

    }


    // Status bar hiding: Backwards compatible to Jellybean

    if (Build.VERSION.SDK_INT >= 16) {

      Log.i(Constants.TAG, "Build.VERSION.SDK_INT >= 16");

      newUiOptions ^= View.SYSTEM_UI_FLAG_FULLSCREEN;

    }


    // Immersive mode: Backward compatible to KitKat.

    // Note that this flag doesn't do anything by itself, it only augments the behavior

    // of HIDE_NAVIGATION and FLAG_FULLSCREEN. For the purposes of this sample

    // all three flags are being toggled together.

    // Note that there are two immersive mode UI flags, one of which is referred to as "sticky".

    // Sticky immersive mode differs in that it makes the navigation and status bars

    // semi-transparent, and the UI flag does not get cleared when the user interacts with

    // the screen.

    if (Build.VERSION.SDK_INT >= 18) {

      Log.i(Constants.TAG, "Build.VERSION.SDK_INT >= 18");

      newUiOptions ^= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;

    }


    getWindow().getDecorView().setSystemUiVisibility(newUiOptions);

  }


참고문서

https://developer.android.com/samples/ImmersiveMode/src/com.example.android.immersivemode/ImmersiveModeFragment.html

https://developer.android.com/training/system-ui/immersive.html

댓글