public static final int SYSTEM_UI_MODE_NONE = 0 ;
public static final int SYSTEM_UI_MODE_TRANSPARENT_BAR_STATUS = 1 ;
public static final int SYSTEM_UI_MODE_TRANSPARENT_LIGHT_BAR_STATUS = 2 ;
public static final int SYSTEM_UI_MODE_TRANSPARENT_BAR_STATUS_AND_NAVIGATION = 3 ;
public static final int SYSTEM_UI_MODE_TRANSPARENT_LIGHT_BAR_STATUS_AND_NAVIGATION = 4 ;
public static final int SYSTEM_UI_MODE_FULLSCREEN = 5 ;
public static final int SYSTEM_UI_MODE_LIGHT_BAR = 6 ;
public void setSystemUiMode ( @SystemUiMode int mode) {
Window window = getWindow ( ) ;
window. clearFlags ( WindowManager. LayoutParams . FLAG_TRANSLUCENT_STATUS | WindowManager. LayoutParams . FLAG_TRANSLUCENT_NAVIGATION) ;
switch ( mode) {
case SYSTEM_UI_MODE_NONE:
window. getDecorView ( ) . setSystemUiVisibility ( View . SYSTEM_UI_FLAG_VISIBLE) ;
if ( Build . VERSION. SDK_INT >= Build . VERSION_CODES. LOLLIPOP) {
TypedValue value = new TypedValue ( ) ;
getTheme ( ) . resolveAttribute ( R . attr. colorPrimary, value, true ) ;
window. setStatusBarColor ( value. data) ;
}
break ;
case SYSTEM_UI_MODE_TRANSPARENT_BAR_STATUS:
case SYSTEM_UI_MODE_TRANSPARENT_LIGHT_BAR_STATUS:
if ( mode == SYSTEM_UI_MODE_TRANSPARENT_LIGHT_BAR_STATUS && Build . VERSION. SDK_INT >= Build. VERSION_CODES. M ) {
window. getDecorView ( ) . setSystemUiVisibility ( View . SYSTEM_UI_FLAG_LAYOUT_STABLE | View . SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View . SYSTEM_UI_FLAG_LIGHT_STATUS_BAR) ;
} else {
window. getDecorView ( ) . setSystemUiVisibility ( View . SYSTEM_UI_FLAG_LAYOUT_STABLE | View . SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN) ;
}
if ( Build . VERSION. SDK_INT >= Build . VERSION_CODES. LOLLIPOP) {
window. addFlags ( WindowManager. LayoutParams . FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) ;
window. setStatusBarColor ( Color . TRANSPARENT) ;
}
break ;
case SYSTEM_UI_MODE_TRANSPARENT_BAR_STATUS_AND_NAVIGATION:
case SYSTEM_UI_MODE_TRANSPARENT_LIGHT_BAR_STATUS_AND_NAVIGATION:
if ( mode == SYSTEM_UI_MODE_TRANSPARENT_LIGHT_BAR_STATUS_AND_NAVIGATION && Build . VERSION. SDK_INT >= Build. VERSION_CODES. M ) {
if ( Build . VERSION. SDK_INT >= Build. VERSION_CODES. O ) {
window. 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_LIGHT_STATUS_BAR | View . SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR) ;
} else if ( Build . VERSION. SDK_INT >= Build . VERSION_CODES. LOLLIPOP) {
window. 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_LIGHT_STATUS_BAR) ;
} else {
window. getDecorView ( ) . setSystemUiVisibility ( View . SYSTEM_UI_FLAG_LAYOUT_STABLE | View . SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View . SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN) ;
}
} else {
window. getDecorView ( ) . setSystemUiVisibility ( View . SYSTEM_UI_FLAG_LAYOUT_STABLE | View . SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View . SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN) ;
}
if ( Build . VERSION. SDK_INT >= Build . VERSION_CODES. LOLLIPOP) {
window. addFlags ( WindowManager. LayoutParams . FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) ;
window. setNavigationBarColor ( Color . TRANSPARENT) ;
window. setStatusBarColor ( Color . TRANSPARENT) ;
}
break ;
case SYSTEM_UI_MODE_FULLSCREEN:
window. getDecorView ( ) . setSystemUiVisibility ( View . SYSTEM_UI_FLAG_LAYOUT_STABLE | View . SYSTEM_UI_FLAG_HIDE_NAVIGATION | View . SYSTEM_UI_FLAG_FULLSCREEN | View . SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View . SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View . SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN) ;
break ;
case SYSTEM_UI_MODE_LIGHT_BAR:
if ( Build . VERSION. SDK_INT >= Build. VERSION_CODES. M ) {
window. getDecorView ( ) . setSystemUiVisibility ( View . SYSTEM_UI_FLAG_LIGHT_STATUS_BAR) ;
}
break ;
}
}