Reputation: 918
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...
Upvotes: 1
Views: 1113
Reputation: 333
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);
}
}
Upvotes: 0
Reputation: 2451
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().
Upvotes: 0