From 47f622d346e4d7cd6f05e81e8aa48ec0620c7df4 Mon Sep 17 00:00:00 2001 From: tehcneko <7741672-NekoInverter@users.noreply.gitlab.com> Date: Wed, 5 Jan 2022 19:44:38 +0800 Subject: [PATCH] Handle light status bar with WindowInsetsController --- .../com/hippo/ehviewer/ui/scene/BaseScene.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/BaseScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/BaseScene.java index df105b1b0..4604e8fcc 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/BaseScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/BaseScene.java @@ -33,6 +33,8 @@ import androidx.annotation.IdRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.StringRes; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsControllerCompat; import androidx.drawerlayout.widget.DrawerLayout; import androidx.fragment.app.FragmentActivity; @@ -49,6 +51,8 @@ public abstract class BaseScene extends SceneFragment { public static final String KEY_DRAWER_VIEW_STATE = "com.hippo.ehviewer.ui.scene.BaseScene:DRAWER_VIEW_STATE"; + private WindowInsetsControllerCompat insetsController; + @Nullable private View drawerView; @Nullable @@ -181,14 +185,12 @@ public abstract class BaseScene extends SceneFragment { } public void setLightStatusBar(boolean set) { - View decorView = requireActivity().getWindow().getDecorView(); - int flags = decorView.getSystemUiVisibility(); - if (set && (requireActivity().getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_YES) <= 0) { - flags |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; - } else { - flags &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; + if (insetsController == null) { + insetsController = ViewCompat.getWindowInsetsController(requireActivity().getWindow().getDecorView()); + } + if (insetsController != null) { + insetsController.setAppearanceLightStatusBars(set && (requireActivity().getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_YES) <= 0); } - decorView.setSystemUiVisibility(flags); needWhiteStatusBar = set; }