From 62b00c758c7d1e793d32ddd96a3433eccc07ff21 Mon Sep 17 00:00:00 2001 From: tarsin Date: Mon, 15 Aug 2022 20:42:44 +0800 Subject: [PATCH] IsLightStatusBar always follow night mode, Fix #199 --- .../com/hippo/ehviewer/ui/MainActivity.java | 1 - .../com/hippo/ehviewer/ui/SettingsActivity.kt | 78 +++++++++---------- .../hippo/ehviewer/ui/scene/BaseScene.java | 19 ++--- .../ehviewer/ui/scene/GalleryDetailScene.java | 15 ---- .../hippo/ehviewer/ui/scene/ToolbarScene.java | 6 -- 5 files changed, 42 insertions(+), 77 deletions(-) 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 69c691103..56bbe15ab 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java @@ -288,7 +288,6 @@ public final class MainActivity extends StageActivity mStageLayout = (EhStageLayout) ViewUtils.$$(this, R.id.fragment_container); mDrawerLayout = (DrawerLayout) ViewUtils.$$(this, R.id.draw_view); - mDrawerLayout.setStatusBarBackgroundColor(0); mNavView = (NavigationView) ViewUtils.$$(this, R.id.nav_view); mRightDrawer = (DrawerView) ViewUtils.$$(this, R.id.right_drawer); diff --git a/app/src/main/java/com/hippo/ehviewer/ui/SettingsActivity.kt b/app/src/main/java/com/hippo/ehviewer/ui/SettingsActivity.kt index 8d5bdcc4d..f35dea775 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/SettingsActivity.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/SettingsActivity.kt @@ -13,56 +13,52 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +package com.hippo.ehviewer.ui -package com.hippo.ehviewer.ui; +import android.content.res.Configuration +import android.os.Bundle +import android.view.MenuItem +import androidx.annotation.StringRes +import androidx.core.view.WindowCompat +import androidx.fragment.app.FragmentTransaction +import com.google.android.material.snackbar.Snackbar +import com.hippo.ehviewer.R +import com.hippo.ehviewer.ui.fragment.SettingsFragment +import com.hippo.ehviewer.ui.scene.BaseScene -import android.os.Bundle; -import android.view.MenuItem; - -import androidx.annotation.StringRes; -import androidx.appcompat.app.ActionBar; -import androidx.fragment.app.FragmentTransaction; - -import com.google.android.material.snackbar.Snackbar; -import com.hippo.ehviewer.R; -import com.hippo.ehviewer.ui.fragment.SettingsFragment; -import com.hippo.ehviewer.ui.scene.BaseScene; - -public final class SettingsActivity extends EhActivity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_preference); - setSupportActionBar(findViewById(R.id.toolbar)); - ActionBar bar = getSupportActionBar(); - if (bar != null) { - bar.setDisplayHomeAsUpEnabled(true); - } +class SettingsActivity : EhActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_preference) + setSupportActionBar(findViewById(R.id.toolbar)) + val bar = supportActionBar + bar?.setDisplayHomeAsUpEnabled(true) + WindowCompat.getInsetsController(window, window.decorView).isAppearanceLightStatusBars = (resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_YES) <= 0 if (savedInstanceState == null) { - getSupportFragmentManager() - .beginTransaction() - .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_MATCH_ACTIVITY_OPEN) - .replace(R.id.fragment, new SettingsFragment()) - .commitAllowingStateLoss(); + supportFragmentManager + .beginTransaction() + .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_MATCH_ACTIVITY_OPEN) + .replace(R.id.fragment, SettingsFragment()) + .commitAllowingStateLoss() } } - public void showTip(@StringRes int id, int length) { - showTip(getString(id), length); + fun showTip(@StringRes id: Int, length: Int) { + showTip(getString(id), length) } - public void showTip(CharSequence message, int length) { - Snackbar.make(findViewById(R.id.snackbar), message, - length == BaseScene.LENGTH_LONG ? Snackbar.LENGTH_LONG : Snackbar.LENGTH_SHORT).show(); + fun showTip(message: CharSequence?, length: Int) { + Snackbar.make( + findViewById(R.id.snackbar), message!!, + if (length == BaseScene.LENGTH_LONG) Snackbar.LENGTH_LONG else Snackbar.LENGTH_SHORT + ).show() } - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == android.R.id.home) { - onBackPressed(); - return true; + override fun onOptionsItemSelected(item: MenuItem): Boolean { + if (item.itemId == android.R.id.home) { + onBackPressed() + return true } - return super.onOptionsItemSelected(item); + return super.onOptionsItemSelected(item) } -} +} \ No newline at end of file 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 c6dc7de53..0712283fb 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 @@ -56,7 +56,6 @@ public abstract class BaseScene extends SceneFragment { private View drawerView; @Nullable private SparseArray drawerViewState; - private boolean needWhiteStatusBar = needWhiteStatusBar(); public void addAboveSnackView(View view) { FragmentActivity activity = getActivity(); @@ -118,10 +117,6 @@ public abstract class BaseScene extends SceneFragment { return true; } - public boolean needWhiteStatusBar() { - return true; - } - public int getNavCheckedItem() { return 0; } @@ -176,14 +171,6 @@ public abstract class BaseScene extends SceneFragment { drawerView = null; } - public void setLightStatusBar(boolean set) { - var insetsController = getInsetsController(); - if (insetsController != null) { - insetsController.setAppearanceLightStatusBars(set && (requireActivity().getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_YES) <= 0); - } - needWhiteStatusBar = set; - } - public void onDestroyDrawerView() { } @@ -213,7 +200,11 @@ public abstract class BaseScene extends SceneFragment { // Hide soft ime hideSoftInput(); - setLightStatusBar(needWhiteStatusBar); + + insetsController = getInsetsController(); + if (insetsController != null) { + insetsController.setAppearanceLightStatusBars((requireActivity().getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_YES) <= 0); + } } @Nullable diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java index f10f55060..05fa3923e 100755 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java @@ -559,12 +559,6 @@ public class GalleryDetailScene extends ToolbarScene implements View.OnClickList ViewGroup main = (ViewGroup) ViewUtils.$$(view, R.id.main); ScrollView mainView = (ScrollView) ViewUtils.$$(main, R.id.scroll_view); - mainView.setOnScrollChangeListener((v, scrollX, scrollY, oldScrollX, oldScrollY) -> { - if (mActionGroup != null && mHeader != null) { - //noinspection IntegerDivisionInFloatingPointContext - setLightStatusBar(mActionGroup.getY() - mHeader.findViewById(R.id.header_content).getPaddingTop() / 2 < scrollY); - } - }); View progressView = ViewUtils.$$(main, R.id.progress_view); mTip = (TextView) ViewUtils.$$(main, R.id.tip); mViewTransition = new ViewTransition(mainView, progressView, mTip); @@ -668,11 +662,6 @@ public class GalleryDetailScene extends ToolbarScene implements View.OnClickList return view; } - @Override - public boolean needWhiteStatusBar() { - return false; - } - @Override public void onDestroyView() { super.onDestroyView(); @@ -841,19 +830,16 @@ public class GalleryDetailScene extends ToolbarScene implements View.OnClickList switch (state) { case STATE_NORMAL: - setLightStatusBar(false); // Show mMainView mViewTransition.showView(0, animation); // Show mBelowHeader mViewTransition2.showView(0, animation); break; case STATE_REFRESH: - setLightStatusBar(true); // Show mProgressView mViewTransition.showView(1, animation); break; case STATE_REFRESH_HEADER: - setLightStatusBar(false); // Show mMainView mViewTransition.showView(0, animation); // Show mProgress @@ -862,7 +848,6 @@ public class GalleryDetailScene extends ToolbarScene implements View.OnClickList default: case STATE_INIT: case STATE_FAILED: - setLightStatusBar(true); // Show mFailedView mViewTransition.showView(2, animation); break; diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/ToolbarScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/ToolbarScene.java index 785abb012..0357cc339 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/ToolbarScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/ToolbarScene.java @@ -87,12 +87,6 @@ public abstract class ToolbarScene extends BaseScene { } } - @Override - public boolean needWhiteStatusBar() { - return false; - } - - public int getMenuResId() { return 0; }