From 6205befb2516fb21ade9cc45d1fa712f1e3b5e55 Mon Sep 17 00:00:00 2001 From: Prathamesh More Date: Thu, 6 Jan 2022 14:50:47 +0530 Subject: [PATCH] Fixed Buggy Navigation bar color on Just Black theme --- .../retromusic/activities/WhatsNewActivity.kt | 1 - .../base/AbsSlidingMusicPanelActivity.kt | 16 ++-- .../activities/base/AbsThemeActivity.kt | 4 +- .../extensions/ActivityThemeExtensions.kt | 49 ++++++++--- app/src/main/res/values/styles_parents.xml | 4 +- .../code/name/monkey/appthemehelper/ATH.kt | 87 +------------------ 6 files changed, 50 insertions(+), 111 deletions(-) diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/WhatsNewActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/WhatsNewActivity.kt index 099ad1fc3..489caaa01 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/WhatsNewActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/WhatsNewActivity.kt @@ -27,7 +27,6 @@ class WhatsNewActivity : AbsThemeActivity() { super.onCreate(savedInstanceState) val binding = ActivityWhatsNewBinding.inflate(layoutInflater) setContentView(binding.root) - setLightStatusBarAuto(surfaceColor()) setTaskDescriptionColorAuto() binding.toolbar.setNavigationOnClickListener { onBackPressed() } ToolbarContentTintHelper.colorBackButton(binding.toolbar) diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt index d38d1330f..808b077ed 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt @@ -31,7 +31,7 @@ import androidx.core.view.isGone import androidx.core.view.isVisible import androidx.fragment.app.Fragment import androidx.fragment.app.commit -import code.name.monkey.appthemehelper.util.ColorUtil +import code.name.monkey.appthemehelper.util.VersionUtils import code.name.monkey.retromusic.R import code.name.monkey.retromusic.RetroBottomSheetBehavior import code.name.monkey.retromusic.databinding.SlidingMusicPanelLayoutBinding @@ -199,6 +199,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() { } private fun animateNavigationBarColor(color: Int) { + if (VersionUtils.hasOreo()) return navigationBarColorAnimator?.cancel() navigationBarColorAnimator = ValueAnimator .ofArgb(window.navigationBarColor, color).apply { @@ -217,8 +218,8 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() { setMiniPlayerAlphaProgress(0F) // restore values animateNavigationBarColor(surfaceColor()) - setLightStatusBarAuto(surfaceColor()) - setLightNavigationAuto() + setLightStatusBarAuto() + setLightNavigationBarAuto() setTaskDescriptionColor(taskColor) } @@ -291,7 +292,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() { if (panelState == STATE_EXPANDED) { navigationBarColor = surfaceColor() setTaskDescColor(paletteColor) - val isColorLight = ColorUtil.isColorLight(paletteColor) + val isColorLight = paletteColor.isColorLight if (PreferenceUtil.isAdaptiveColor && (nowPlayingScreen == Normal || nowPlayingScreen == Flat)) { setLightNavigationBar(true) setLightStatusBar(isColorLight) @@ -314,13 +315,6 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() { setLightStatusBar(false) } else if (nowPlayingScreen == Fit) { setLightStatusBar(false) - } else { - setLightStatusBar( - ColorUtil.isColorLight( - surfaceColor() - ) - ) - setLightNavigationBar(true) } } } diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt index e9cac3e2a..edb70cb54 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt @@ -24,6 +24,7 @@ import androidx.appcompat.app.AppCompatDelegate.setDefaultNightMode import androidx.core.os.ConfigurationCompat import code.name.monkey.appthemehelper.common.ATHToolbarActivity import code.name.monkey.retromusic.LanguageContextWrapper +import code.name.monkey.retromusic.R import code.name.monkey.retromusic.extensions.* import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.theme.ThemeManager @@ -42,7 +43,7 @@ abstract class AbsThemeActivity : ATHToolbarActivity(), Runnable { setImmersiveFullscreen() registerSystemUiVisibility() toggleScreenOn() - setLightNavigationAuto() + setLightNavigationBarAuto() setLightStatusBarAuto(surfaceColor()) } @@ -57,6 +58,7 @@ abstract class AbsThemeActivity : ATHToolbarActivity(), Runnable { com.google.android.material.R.style.ThemeOverlay_Material3_DynamicColors_DayNight ) } + setTheme(R.style.FontThemeOverlay) } override fun onWindowFocusChanged(hasFocus: Boolean) { diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityThemeExtensions.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityThemeExtensions.kt index 582b5d438..86b39f509 100644 --- a/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityThemeExtensions.kt +++ b/app/src/main/java/code/name/monkey/retromusic/extensions/ActivityThemeExtensions.kt @@ -4,6 +4,7 @@ import android.app.ActivityManager import android.graphics.Color import android.os.Build import android.view.View +import android.view.View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR import android.view.WindowManager import androidx.appcompat.app.AppCompatActivity import androidx.core.view.WindowCompat @@ -11,7 +12,6 @@ import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsControllerCompat import androidx.core.view.isGone import androidx.fragment.app.FragmentActivity -import code.name.monkey.appthemehelper.ATH import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.VersionUtils import code.name.monkey.retromusic.R @@ -57,19 +57,19 @@ private fun AppCompatActivity.hideStatusBar(fullscreen: Boolean) { } fun AppCompatActivity.setDrawBehindSystemBars() { - WindowCompat.setDecorFitsSystemWindows(window, false) if (VersionUtils.hasOreo()) { + WindowCompat.setDecorFitsSystemWindows(window, false) + window.navigationBarColor = Color.TRANSPARENT + window.statusBarColor = Color.TRANSPARENT if (VersionUtils.hasQ()) { window.isNavigationBarContrastEnforced = false } - window.navigationBarColor = Color.TRANSPARENT - window.statusBarColor = Color.TRANSPARENT } else { setNavigationBarColorPreOreo(surfaceColor()) if (VersionUtils.hasMarshmallow()) { setStatusBarColor(Color.TRANSPARENT) } else { - setStatusBarColor(surfaceColor()) + setStatusBarColor(Color.BLACK) } } } @@ -96,24 +96,49 @@ fun AppCompatActivity.setTaskDescriptionColorAuto() { setTaskDescriptionColor(surfaceColor()) } -fun AppCompatActivity.setLightNavigationAuto() { - ATH.setLightNavigationBarAuto(this, surfaceColor()) +@Suppress("Deprecation") +fun AppCompatActivity.setLightStatusBar(enabled: Boolean) { + if (VersionUtils.hasMarshmallow()) { + val decorView = window.decorView + val systemUiVisibility = decorView.systemUiVisibility + if (enabled) { + decorView.systemUiVisibility = + systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR + } else { + decorView.systemUiVisibility = + systemUiVisibility and View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR.inv() + } + } } -fun AppCompatActivity.setLightStatusBar(enabled: Boolean) { - ATH.setLightStatusBar(this, enabled) +fun AppCompatActivity.setLightStatusBarAuto() { + setLightStatusBar(surfaceColor().isColorLight) } fun AppCompatActivity.setLightStatusBarAuto(bgColor: Int) { - setLightStatusBar(ColorUtil.isColorLight(bgColor)) + setLightStatusBar(bgColor.isColorLight) } +@Suppress("Deprecation") fun AppCompatActivity.setLightNavigationBar(enabled: Boolean) { - ATH.setLightNavigationBar(this, enabled) + if (VersionUtils.hasOreo()) { + val decorView = window.decorView + var systemUiVisibility = decorView.systemUiVisibility + systemUiVisibility = if (enabled) { + systemUiVisibility or SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR + } else { + systemUiVisibility and SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR.inv() + } + decorView.systemUiVisibility = systemUiVisibility + } +} + +fun AppCompatActivity.setLightNavigationBarAuto() { + setLightNavigationBar(surfaceColor().isColorLight) } fun AppCompatActivity.setLightNavigationBarAuto(bgColor: Int) { - setLightNavigationBar(ColorUtil.isColorLight(bgColor)) + setLightNavigationBar(bgColor.isColorLight) } diff --git a/app/src/main/res/values/styles_parents.xml b/app/src/main/res/values/styles_parents.xml index 6229dedbb..6b6bdfd67 100644 --- a/app/src/main/res/values/styles_parents.xml +++ b/app/src/main/res/values/styles_parents.xml @@ -1,5 +1,5 @@ - + - \ No newline at end of file diff --git a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/ATH.kt b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/ATH.kt index 63c3e9fe1..9ed1d0b09 100755 --- a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/ATH.kt +++ b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/ATH.kt @@ -6,8 +6,11 @@ import android.content.Context import android.os.Build import android.view.View import android.view.View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR +import android.view.WindowInsetsController +import android.view.WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS import androidx.annotation.ColorInt import androidx.appcompat.widget.Toolbar +import androidx.core.view.WindowInsetsControllerCompat import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper @@ -25,90 +28,6 @@ object ATH { ) > since } - @Suppress("Deprecation") - fun setLightStatusBar(activity: Activity, enabled: Boolean) { - if (VersionUtils.hasMarshmallow()) { - val decorView = activity.window.decorView - val systemUiVisibility = decorView.systemUiVisibility - if (enabled) { - decorView.systemUiVisibility = - systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR - } else { - decorView.systemUiVisibility = - systemUiVisibility and View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR.inv() - } - } - } - - @Suppress("Deprecation") - fun setLightNavigationBar(activity: Activity, enabled: Boolean) { - if (VersionUtils.hasOreo()) { - val decorView = activity.window.decorView - var systemUiVisibility = decorView.systemUiVisibility - systemUiVisibility = if (enabled) { - systemUiVisibility or SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR - } else { - systemUiVisibility and SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR.inv() - } - decorView.systemUiVisibility = systemUiVisibility - - } - } - - fun setLightNavigationBarAuto(activity: Activity, bgColor: Int) { - setLightNavigationBar(activity, ColorUtil.isColorLight(bgColor)) - } - - fun setNavigationBarColor(activity: Activity, color: Int) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - activity.window.navigationBarColor = color - } else { - activity.window.navigationBarColor = ColorUtil.darkenColor(color) - } - setLightNavigationBarAuto(activity, color) - } - - fun setActivityToolbarColorAuto(activity: Activity, toolbar: Toolbar?) { - setActivityToolbarColor(activity, toolbar, ThemeStore.primaryColor(activity)) - } - - private fun setActivityToolbarColor( - activity: Activity, toolbar: Toolbar?, - color: Int - ) { - if (toolbar == null) { - return - } - toolbar.setBackgroundColor(color) - ToolbarContentTintHelper.setToolbarContentColorBasedOnToolbarColor( - activity, - toolbar, - color - ) - } - - fun setTaskDescriptionColorAuto(activity: Activity) { - setTaskDescriptionColor(activity, ThemeStore.primaryColor(activity)) - } - - fun setTaskDescriptionColor(activity: Activity, @ColorInt color: Int) { - var colorFinal = color - // Task description requires fully opaque color - colorFinal = ColorUtil.stripAlpha(colorFinal) - // Sets color of entry in the system recents page - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { - activity.setTaskDescription( - ActivityManager.TaskDescription( - activity.title as String?, - -1, - colorFinal - ) - ) - } else { - activity.setTaskDescription(ActivityManager.TaskDescription(activity.title as String?)) - } - } - fun setTint(view: View, @ColorInt color: Int) { TintHelper.setTintAuto(view, color, false) }