1

I want to hide and show soft key (home, back, menu) like youtube, when video is in full screen mode. I am using below code.

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);

But it is not like youtube, it disturb the whole view on hide and show.

I know, I am missing something. But I don't what I am missing...

Faisal Ahsan
  • 928
  • 1
  • 12
  • 22

2 Answers2

0

Try This,

   void enableImmersiveMode() {

    ((FrameLayout) mToolbar.getParent()).setFitsSystemWindows(false);

    // True immersive mode is available only for android API 19 and above,
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
        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_STICKY);

    }

UPDATE: Disabling the immersive mode should be like this,

private void disableImmersiveMode() {

    ((FrameLayout) mToolbar.getParent()).setFitsSystemWindows(true);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        mDecorView.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
    }

This way, you should see the jerk only one first call of enableImmersiveMode().

Tony
  • 2,242
  • 22
  • 33
0

All you want is Immersive mode. Try below code in your Activity.

@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);
        }
    }
AnujDeo
  • 333
  • 1
  • 4
  • 13