下面列出了android.view.View#SYSTEM_UI_FLAG_IMMERSIVE 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public void run() {
int flags;
int curApiVersion = android.os.Build.VERSION.SDK_INT;
// This work only for android 4.4+
if (curApiVersion >= Build.VERSION_CODES.KITKAT) {
// This work only for android 4.4+
// hide navigation bar permanently in android activity
// touch the screen, the navigation bar will not show
flags = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_IMMERSIVE
| View.SYSTEM_UI_FLAG_FULLSCREEN;
} else {
// touch the screen, the navigation bar will show
flags = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
}
// must be executed in main thread :)
getWindow().getDecorView().setSystemUiVisibility(flags);
}
@Override
public void run() {
int flags;
int curApiVersion = android.os.Build.VERSION.SDK_INT;
// This work only for android 4.4+
if (curApiVersion >= Build.VERSION_CODES.KITKAT) {
// This work only for android 4.4+
// hide navigation bar permanently in android activity
// touch the screen, the navigation bar will not show
flags = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_IMMERSIVE
| View.SYSTEM_UI_FLAG_FULLSCREEN;
} else {
// touch the screen, the navigation bar will show
flags = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
}
// must be executed in main thread :)
getWindow().getDecorView().setSystemUiVisibility(flags);
}
/**
* Determines the appropriate fullscreen flags based on the
* systems API version.
*
* @return The appropriate decor view flags to enter fullscreen mode when supported
*/
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
private int getFullscreenUiFlags() {
int flags = View.SYSTEM_UI_FLAG_LOW_PROFILE | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
flags |= View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
flags |= View.SYSTEM_UI_FLAG_IMMERSIVE;
}
return flags;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 隐藏状态栏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
WindowManager.LayoutParams params = getWindow().getAttributes();
params.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE;
getWindow().setAttributes(params);
setContentView(R.layout.activity_tidal_pat_record_video);
mMusicBean = (MusicBean) getIntent().getSerializableExtra("MusicBean");
mPresenter = new RecordVideoPresenter(this, mMusicBean);
initView();
boolean isAudioPermission = CheckPermissionUtil.isHasAudioPermission(this);
if (!isAudioPermission) {
mCircleRecordView.setCanTouch(isAudioPermission);
ToastTool.showShort(AppUtil.getApplicationContext(), R.string.tidal_pat_record_check_audio_permission);
}
}
@Override
protected int createHideFlags() {
int flag = super.createHideFlags();
if (mLevel == SystemUiHelper.LEVEL_IMMERSIVE) {
// If the client requested immersive mode, and we're on Android 4.4
// or later, add relevant flags. Applying HIDE_NAVIGATION without
// IMMERSIVE prevents the activity from accepting all touch events,
// so we only do this on Android 4.4 and later (where IMMERSIVE is
// present).
flag |= ((mFlags & SystemUiHelper.FLAG_IMMERSIVE_STICKY) != 0)
? View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
: View.SYSTEM_UI_FLAG_IMMERSIVE;
}
return flag;
}
/**
* Show / hide bottom and top Android system bars
*
* @param visible True if bars have to be shown; false instead
*/
private void setSystemBarsVisible(boolean visible) {
int uiOptions;
if (visible) {
uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
} else {
uiOptions = View.SYSTEM_UI_FLAG_IMMERSIVE
// Set the content to appear under the system bars so that the
// content doesn't resize when the system bars hide and show.
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
// Hide the nav bar and status bar
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN;
}
// Defensive programming here because crash reports show that getView() sometimes is null
// (just don't ask me why...)
View v = getView();
if (v != null) v.setSystemUiVisibility(uiOptions);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (activity.getSupportActionBar() != null && activity.getSupportActionBar().isShowing())
activity.getSupportActionBar().hide();
if (Build.VERSION.SDK_INT >= 19) {
mUIFlag ^= View.SYSTEM_UI_FLAG_IMMERSIVE;
}
if (this.isVisible()) {
// Check orientation and lock to portrait if we are on phone
if (getResources().getBoolean(R.bool.portrait_only)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
}
}
imageLoader.displayImage(currImg, mImageView, options, imageLoadingListener);
}
/**
* Hide navigation bar.
*/
public final void hideNavigationBar() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_IMMERSIVE;
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(uiOptions);
} else {
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
getWindow().setAttributes(lp);
}
}
@Override
public void enterFullscreen() {
isFullscreen = true;
int uiOption = 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;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
uiOption |= View.SYSTEM_UI_FLAG_IMMERSIVE;
}
getWindow().getDecorView().setSystemUiVisibility(uiOption);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
if (getSupportActionBar() != null) {
getSupportActionBar().hide();
}
ndMenu.getDrawerLayout().setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
}
public static void hideNavigation(Window curWindow) {
if (curWindow != null && Build.VERSION.SDK_INT >= 19) {
//隐藏Navigation bar
WindowManager.LayoutParams layoutParams = curWindow.getAttributes();
layoutParams.systemUiVisibility |= View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_IMMERSIVE
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
;
// layoutParams.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
curWindow.setAttributes(layoutParams);
// View decorView = curWindow.getDecorView();
// if (decorView != null) {
// int oldUiFlags = decorView.getSystemUiVisibility();
// int uiFlags =
// oldUiFlags |
// View.SYSTEM_UI_FLAG_LAYOUT_STABLE
//// | WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
// | View.SYSTEM_UI_FLAG_IMMERSIVE
// | 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;
// decorView.setSystemUiVisibility(uiFlags);
// }
}
}
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
private int getFullscreenUiFlags() {
int flags = View.SYSTEM_UI_FLAG_LOW_PROFILE | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
flags |= View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
flags |= View.SYSTEM_UI_FLAG_IMMERSIVE;
}
return flags;
}
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
private int getFullscreenUiFlags() {
int flags = View.SYSTEM_UI_FLAG_LOW_PROFILE | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
flags |= View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
flags |= View.SYSTEM_UI_FLAG_IMMERSIVE;
}
return flags;
}
/**
* @param savedInstanceState if the fragment is being re-created from a previous saved state, this is the state.
*/
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (activity.getSupportActionBar() != null)
activity.getSupportActionBar().hide();
if (Build.VERSION.SDK_INT >= 19) {
mUIFlag ^= View.SYSTEM_UI_FLAG_IMMERSIVE;
}
activity.getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(activity, R.color.black));
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
activity.getWindow().getDecorView().setSystemUiVisibility(mUIFlag);
else
activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
}
/**
* 隐藏虚拟按键,并且全屏
*/
protected void hideBottomUIMenu() {
//隐藏虚拟按键,并且全屏
int flags;
int curApiVersion = android.os.Build.VERSION.SDK_INT;
// This work only for android 4.4+
if (curApiVersion >= Build.VERSION_CODES.KITKAT) {
// This work only for android 4.4+
// hide navigation bar permanently in android activity
// touch the screen, the navigation bar will not show
flags = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_IMMERSIVE
| View.SYSTEM_UI_FLAG_FULLSCREEN;
} else {
// touch the screen, the navigation bar will show
flags = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
}
// must be executed in main thread :)
getWindow().getDecorView().setSystemUiVisibility(flags);
// if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api
// View v = this.getWindow().getDecorView();
// v.setSystemUiVisibility(View.GONE);
// } else if (Build.VERSION.SDK_INT >= 19) {
// Window window = getWindow();
// WindowManager.LayoutParams params = window.getAttributes();
// params.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
// window.setAttributes(params);
//
//// //for new api versions.
//// View decorView = getWindow().getDecorView();
//// int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
//// | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN;
//// decorView.setSystemUiVisibility(uiOptions);
// }
}
/**
* Shows or hides system UI (status bar and navigation bar).
*/
private void showSystemUi(boolean show) {
int flags = 0;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
flags = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE;
}
getWindow().getDecorView().setSystemUiVisibility(show ? 0 : flags);
}
public void setSystemUiVisibilityFake() {
int visibility = SYSTEM_UI_BASIC_FLAGS | View.SYSTEM_UI_FLAG_IMMERSIVE;
if (getConfig().isFullScreen()) {
visibility |= View.SYSTEM_UI_FLAG_FULLSCREEN;
}
getWindow().getDecorView().setSystemUiVisibility(visibility);
}
/**
* Detects and toggles immersive mode (also known as "hidey bar" mode).
*/
public static void toggleHideyBar(View decorView) {
// The UI options currently enabled are represented by a bitfield.
// getSystemUiVisibility() gives us that bitfield.
int uiOptions = decorView.getSystemUiVisibility();
int newUiOptions = uiOptions;
boolean isImmersiveModeEnabled =
((uiOptions | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY) == uiOptions);
if (isImmersiveModeEnabled) {
// Log.i(TAG, "Turning immersive mode mode off. ");
} else {
// Log.i(TAG, "Turning immersive mode mode on.");
}
// Navigation bar hiding: Backwards compatible to ICS.
if (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) {
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) {
newUiOptions ^= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
}
if (Build.VERSION.SDK_INT >= 19) {
newUiOptions ^= View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;
newUiOptions ^= View.SYSTEM_UI_FLAG_IMMERSIVE;
}
decorView.setSystemUiVisibility(newUiOptions);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 隐藏状态栏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
WindowManager.LayoutParams params = getWindow().getAttributes();
params.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION| View.SYSTEM_UI_FLAG_IMMERSIVE;
getWindow().setAttributes(params);
setContentView(R.layout.activity_tidal_pat_video_crop);
mCurrentVideoPath = getIntent().getStringExtra("mCurrentVideoPath");
mPlayView = (SpecialEffectsPlayView) findViewById(R.id.tidal_pat_crop_video_pv);
mPlayView.setLooping(true);
mPlayView.setNeedCallBackFinish(true);
SpecialEffectsPlayManager.startPlay(mPlayView);
mVideoCropViewBar = findViewById(R.id.tidal_pat_video_crop_crop_view);
mSpeedLevelControllerView = findViewById(R.id.tidal_pat_video_crop_speed_controller_view);
mSaveImg = findViewById(R.id.tidal_pat_crop_video_save_img);
mSelectedTxt = findViewById(R.id.tidal_pat_video_crop_selected_time_txt);
mVideoCropViewBar.setVideoCropViewBarListener(mVideoCropViewBarListener);
mVideoCropViewBar.setVideoPath(mCurrentVideoPath);
mPlayView.setVideoPath(mCurrentVideoPath);
mSpeedLevelControllerView.setOnSpeedLevelChangeListener(mSpeedLevelChangeListener);
mSaveImg.setOnClickListener(this);
findViewById(R.id.tidal_pat_crop_video_back_img).setOnClickListener(this);
mPlayView.setSpecialEffectsPlayViewListener(mPlayViewListener);
mLoadingView = findViewById(R.id.personal_show_record_video_loading_layout);
mLoadingView.setOnClickListener(this);
mLoadingTxt = (TextView) findViewById(R.id.tidal_pat_record_video_loading_txt);
initRecordTimeSelectorView();
}
/**
* 代码的方式来设置沉浸式界面
* @param curActivity 当前Activity
* @param needFullScreen 是否需要全屏:一般为false
* @param translucentNavBar 是否需要透明导航栏:一般为true
* @param hideNavigation 是否要隐藏导航栏: 一般为true
* @param drawStatusBarBg 是否需要在Android 5.0及以上 接管状态栏背景绘制,用于指定 状态栏背景颜色
* @param statusBarColor 想要的状态栏颜色
* @param isLightStatusBar 是否需要在Android 6.0及以上 启用状态栏的灰色文字和图标
*/
public static void immersiveScreen(Activity curActivity,boolean needFullScreen,
boolean translucentNavBar,boolean hideNavigation,
boolean drawStatusBarBg, int statusBarColor,boolean isLightStatusBar) {
if (curActivity != null) {
Window window = curActivity.getWindow();
if (window != null) {
WindowManager.LayoutParams windowParams = window.getAttributes();
if (windowParams != null) {
//已经存在的 可见性参数
int mayExistVisibility = windowParams.systemUiVisibility;
// int mayExistFlags = windowParams.flags;
int curSdkInt = Build.VERSION.SDK_INT;
if (needFullScreen) {
// mayExistFlags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
if (curSdkInt >= 19) {//Android 4.4后才有沉浸式
if (translucentNavBar) {
// mayExistFlags |= WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION;
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}
//默认的实现沉浸式flag
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
if (curSdkInt >= 21) {
if (drawStatusBarBg) {//如果需要 代替绘制状态栏的背景,则需要清除 FLAG_TRANSLUCENT_STATUS
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
}
if (statusBarColor != -1) {
window.setStatusBarColor(statusBarColor);
}
if (curSdkInt >= 23) {//Android 6.0以上 实现状态栏字色和图标浅黑色
if (isLightStatusBar) {
mayExistVisibility |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
}
}
}
if (hideNavigation) {//隐藏导航栏
mayExistVisibility |= View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_IMMERSIVE
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
;
windowParams.systemUiVisibility = mayExistVisibility;
window.setAttributes(windowParams);
}
}//curSdkInt >= 19 end
}
}
}
}
/**
* Detects and toggles immersive mode (also known as "hidey bar" mode).
*/
public void toggleUiFlags() {
// BEGIN_INCLUDE (get_current_ui_flags)
// The "Decor View" is the parent view of the Activity. It's also conveniently the easiest
// one to find from within a fragment, since there's a handy helper method to pull it, and
// we don't have to bother with picking a view somewhere deeper in the hierarchy and calling
// "findViewById" on it.
View decorView = getActivity().getWindow().getDecorView();
int uiOptions = decorView.getSystemUiVisibility();
int newUiOptions = uiOptions;
// END_INCLUDE (get_current_ui_flags)
// BEGIN_INCLUDE (toggle_lowprofile_mode)
// Low profile mode doesn't resize the screen at all, but it covers the nav & status bar
// icons with black so they're less distracting. Unlike "full screen" and "hide nav bar,"
// this mode doesn't interact with immersive mode at all, but it's instructive when running
// this sample to observe the differences in behavior.
if (mLowProfileCheckBox.isChecked()) {
newUiOptions |= View.SYSTEM_UI_FLAG_LOW_PROFILE;
} else {
newUiOptions &= ~View.SYSTEM_UI_FLAG_LOW_PROFILE;
}
// END_INCLUDE (toggle_lowprofile_mode)
// BEGIN_INCLUDE (toggle_fullscreen_mode)
// When enabled, this flag hides non-critical UI, such as the status bar,
// which usually shows notification icons, battery life, etc
// on phone-sized devices. The bar reappears when the user swipes it down. When immersive
// mode is also enabled, the app-drawable area expands, and when the status bar is swiped
// down, it appears semi-transparently and slides in over the app, instead of pushing it
// down.
if (mHideStatusBarCheckBox.isChecked()) {
newUiOptions |= View.SYSTEM_UI_FLAG_FULLSCREEN;
} else {
newUiOptions &= ~View.SYSTEM_UI_FLAG_FULLSCREEN;
}
// END_INCLUDE (toggle_fullscreen_mode)
// BEGIN_INCLUDE (toggle_hidenav_mode)
// When enabled, this flag hides the black nav bar along the bottom,
// where the home/back buttons are. The nav bar normally instantly reappears
// when the user touches the screen. When immersive mode is also enabled, the nav bar
// stays hidden until the user swipes it back.
if (mHideNavCheckbox.isChecked()) {
newUiOptions |= View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
} else {
newUiOptions &= ~View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
}
// END_INCLUDE (toggle_hidenav_mode)
// BEGIN_INCLUDE (toggle_immersive_mode)
// Immersive mode doesn't do anything without at least one of the previous flags
// enabled. When enabled, it allows the user to swipe the status and/or nav bars
// off-screen. When the user swipes the bars back onto the screen, the flags are cleared
// and immersive mode is automatically disabled.
if (mImmersiveModeCheckBox.isChecked()) {
newUiOptions |= View.SYSTEM_UI_FLAG_IMMERSIVE;
} else {
newUiOptions &= ~View.SYSTEM_UI_FLAG_IMMERSIVE;
}
// END_INCLUDE (toggle_immersive_mode)
// BEGIN_INCLUDE (toggle_immersive_mode_sticky)
// There's actually two forms of immersive mode, normal and "sticky". Sticky immersive mode
// is different in 2 key ways:
//
// * Uses semi-transparent bars for the nav and status bars
// * This UI flag will *not* be cleared when the user interacts with the UI.
// When the user swipes, the bars will temporarily appear for a few seconds and then
// disappear again.
if (mImmersiveModeStickyCheckBox.isChecked()) {
newUiOptions |= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
} else {
newUiOptions &= ~View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
}
// END_INCLUDE (toggle_immersive_mode_sticky)
// BEGIN_INCLUDE (set_ui_flags)
//Set the new UI flags.
decorView.setSystemUiVisibility(newUiOptions);
// END_INCLUDE (set_ui_flags)
dumpFlagStateToLog(uiOptions);
}