Handle light status bar with WindowInsetsController

This commit is contained in:
tehcneko committed 2022-01-23 20:54:33 +08:00
1 parent 865aff4fde
commit 47f622d346
1 file changed
+9 -7
@@ -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;
}