From 0cd9d2533a1dbfa4bd8a516d2030ffc72cad6be0 Mon Sep 17 00:00:00 2001 From: tehcneko <7764726+tehcneko@users.noreply.github.com> Date: Wed, 17 Mar 2021 21:37:30 +0800 Subject: [PATCH] Fix themes --- .../com/hippo/ehviewer/ui/EhActivity.java | 26 +++++++++++++++ .../com/hippo/ehviewer/ui/MainActivity.java | 4 --- .../hippo/ehviewer/ui/SettingsActivity.java | 13 -------- app/src/main/res/layout/activity_main.xml | 5 ++- .../main/res/layout/activity_preference.xml | 13 +++++--- app/src/main/res/layout/scene_toolbar.xml | 2 +- app/src/main/res/values-night/styles.xml | 19 +++++++++++ app/src/main/res/values-night/themes.xml | 4 --- app/src/main/res/values/styles.xml | 1 + app/src/main/res/values/themes.xml | 18 +++++++---- app/src/main/res/values/themes_override.xml | 32 +++++++++++++++++++ 11 files changed, 104 insertions(+), 33 deletions(-) create mode 100644 app/src/main/res/values-night/styles.xml create mode 100644 app/src/main/res/values/themes_override.xml diff --git a/app/src/main/java/com/hippo/ehviewer/ui/EhActivity.java b/app/src/main/java/com/hippo/ehviewer/ui/EhActivity.java index 633381bb4..805a91a16 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/EhActivity.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/EhActivity.java @@ -19,7 +19,10 @@ package com.hippo.ehviewer.ui; import android.content.Context; import android.content.res.Configuration; import android.content.res.Resources; +import android.graphics.Color; +import android.os.Build; import android.os.Bundle; +import android.view.Window; import android.view.WindowManager; import androidx.annotation.NonNull; @@ -30,6 +33,7 @@ import com.hippo.ehviewer.EhApplication; import com.hippo.ehviewer.R; import com.hippo.ehviewer.Settings; +import rikka.core.res.ResourcesKt; import rikka.material.app.MaterialActivity; public abstract class EhActivity extends MaterialActivity { @@ -98,4 +102,26 @@ public abstract class EhActivity extends MaterialActivity { getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE); } } + + @Override + public void onApplyTranslucentSystemBars() { + super.onApplyTranslucentSystemBars(); + Window window = getWindow(); + window.setStatusBarColor(Color.TRANSPARENT); + + window.getDecorView().post(() -> { + if (window.getDecorView().getRootWindowInsets().getSystemWindowInsetBottom() >= Resources.getSystem().getDisplayMetrics().density * 40) { + window.setNavigationBarColor(ResourcesKt.resolveColor(getTheme(), android.R.attr.navigationBarColor) & 0x00ffffff | -0x20000000); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + window.setNavigationBarContrastEnforced(false); + } + } else { + window.setNavigationBarColor(Color.TRANSPARENT); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + window.setNavigationBarContrastEnforced(true); + } + } + }); + + } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java b/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java index d51625e94..dd0d0dde8 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java @@ -325,10 +325,6 @@ public final class MainActivity extends StageActivity Settings.putTheme(theme); } }); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - WindowCompat.setDecorFitsSystemWindows(getWindow(), false); - findViewById(R.id.fragment_container).setFitsSystemWindows(true); - } updateProfile(); diff --git a/app/src/main/java/com/hippo/ehviewer/ui/SettingsActivity.java b/app/src/main/java/com/hippo/ehviewer/ui/SettingsActivity.java index 03efc9b92..a5d3fa602 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/SettingsActivity.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/SettingsActivity.java @@ -16,16 +16,11 @@ package com.hippo.ehviewer.ui; -import android.os.Build; import android.os.Bundle; import android.view.MenuItem; import androidx.annotation.StringRes; import androidx.appcompat.app.ActionBar; -import androidx.core.graphics.Insets; -import androidx.core.view.ViewCompat; -import androidx.core.view.WindowCompat; -import androidx.core.view.WindowInsetsCompat; import com.google.android.material.snackbar.Snackbar; import com.hippo.ehviewer.R; @@ -49,14 +44,6 @@ public final class SettingsActivity extends EhActivity { .replace(R.id.fragment, new SettingsFragment()) .commitAllowingStateLoss(); } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - WindowCompat.setDecorFitsSystemWindows(getWindow(), false); - ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.snackbar), (v, insets) -> { - Insets insets1 = insets.getInsets(WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.ime()); - v.setPadding(insets1.left, insets1.top, insets1.right, 0); - return insets; - }); - } } public void showTip(@StringRes int id, int length) { diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index b30242fbe..edc9ad99d 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -17,7 +17,10 @@ + android:layout_height="match_parent" + app:consumeSystemWindowsInsets="start|end" + app:edgeToEdge="true" + app:fitSystemWindowsInsets="start|end"> + android:clipChildren="false" + app:consumeSystemWindowsInsets="start|end" + app:edgeToEdge="true" + app:fitSystemWindowsInsets="start|end"> + android:elevation="4dp" + android:fitsSystemWindows="true" + app:statusBarForeground="?colorPrimaryDark"> diff --git a/app/src/main/res/layout/scene_toolbar.xml b/app/src/main/res/layout/scene_toolbar.xml index 7bc1494b8..6e0d1883a 100644 --- a/app/src/main/res/layout/scene_toolbar.xml +++ b/app/src/main/res/layout/scene_toolbar.xml @@ -26,7 +26,7 @@ android:fitsSystemWindows="true" android:background="?attr/toolbarColor" android:elevation="4dp" - app:statusBarForeground="@color/colorPrimaryDark"> + app:statusBarForeground="?colorPrimaryDark"> + + + - - - + + + + + + + + + \ No newline at end of file