Fixed Buggy Navigation bar color on Just Black theme
This commit is contained in:
parent
5589fab2c6
commit
6205befb25
6 changed files with 50 additions and 111 deletions
|
@ -27,7 +27,6 @@ class WhatsNewActivity : AbsThemeActivity() {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
val binding = ActivityWhatsNewBinding.inflate(layoutInflater)
|
val binding = ActivityWhatsNewBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
setLightStatusBarAuto(surfaceColor())
|
|
||||||
setTaskDescriptionColorAuto()
|
setTaskDescriptionColorAuto()
|
||||||
binding.toolbar.setNavigationOnClickListener { onBackPressed() }
|
binding.toolbar.setNavigationOnClickListener { onBackPressed() }
|
||||||
ToolbarContentTintHelper.colorBackButton(binding.toolbar)
|
ToolbarContentTintHelper.colorBackButton(binding.toolbar)
|
||||||
|
|
|
@ -31,7 +31,7 @@ import androidx.core.view.isGone
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.commit
|
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.R
|
||||||
import code.name.monkey.retromusic.RetroBottomSheetBehavior
|
import code.name.monkey.retromusic.RetroBottomSheetBehavior
|
||||||
import code.name.monkey.retromusic.databinding.SlidingMusicPanelLayoutBinding
|
import code.name.monkey.retromusic.databinding.SlidingMusicPanelLayoutBinding
|
||||||
|
@ -199,6 +199,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun animateNavigationBarColor(color: Int) {
|
private fun animateNavigationBarColor(color: Int) {
|
||||||
|
if (VersionUtils.hasOreo()) return
|
||||||
navigationBarColorAnimator?.cancel()
|
navigationBarColorAnimator?.cancel()
|
||||||
navigationBarColorAnimator = ValueAnimator
|
navigationBarColorAnimator = ValueAnimator
|
||||||
.ofArgb(window.navigationBarColor, color).apply {
|
.ofArgb(window.navigationBarColor, color).apply {
|
||||||
|
@ -217,8 +218,8 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
|
||||||
setMiniPlayerAlphaProgress(0F)
|
setMiniPlayerAlphaProgress(0F)
|
||||||
// restore values
|
// restore values
|
||||||
animateNavigationBarColor(surfaceColor())
|
animateNavigationBarColor(surfaceColor())
|
||||||
setLightStatusBarAuto(surfaceColor())
|
setLightStatusBarAuto()
|
||||||
setLightNavigationAuto()
|
setLightNavigationBarAuto()
|
||||||
setTaskDescriptionColor(taskColor)
|
setTaskDescriptionColor(taskColor)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -291,7 +292,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
|
||||||
if (panelState == STATE_EXPANDED) {
|
if (panelState == STATE_EXPANDED) {
|
||||||
navigationBarColor = surfaceColor()
|
navigationBarColor = surfaceColor()
|
||||||
setTaskDescColor(paletteColor)
|
setTaskDescColor(paletteColor)
|
||||||
val isColorLight = ColorUtil.isColorLight(paletteColor)
|
val isColorLight = paletteColor.isColorLight
|
||||||
if (PreferenceUtil.isAdaptiveColor && (nowPlayingScreen == Normal || nowPlayingScreen == Flat)) {
|
if (PreferenceUtil.isAdaptiveColor && (nowPlayingScreen == Normal || nowPlayingScreen == Flat)) {
|
||||||
setLightNavigationBar(true)
|
setLightNavigationBar(true)
|
||||||
setLightStatusBar(isColorLight)
|
setLightStatusBar(isColorLight)
|
||||||
|
@ -314,13 +315,6 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity() {
|
||||||
setLightStatusBar(false)
|
setLightStatusBar(false)
|
||||||
} else if (nowPlayingScreen == Fit) {
|
} else if (nowPlayingScreen == Fit) {
|
||||||
setLightStatusBar(false)
|
setLightStatusBar(false)
|
||||||
} else {
|
|
||||||
setLightStatusBar(
|
|
||||||
ColorUtil.isColorLight(
|
|
||||||
surfaceColor()
|
|
||||||
)
|
|
||||||
)
|
|
||||||
setLightNavigationBar(true)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@ import androidx.appcompat.app.AppCompatDelegate.setDefaultNightMode
|
||||||
import androidx.core.os.ConfigurationCompat
|
import androidx.core.os.ConfigurationCompat
|
||||||
import code.name.monkey.appthemehelper.common.ATHToolbarActivity
|
import code.name.monkey.appthemehelper.common.ATHToolbarActivity
|
||||||
import code.name.monkey.retromusic.LanguageContextWrapper
|
import code.name.monkey.retromusic.LanguageContextWrapper
|
||||||
|
import code.name.monkey.retromusic.R
|
||||||
import code.name.monkey.retromusic.extensions.*
|
import code.name.monkey.retromusic.extensions.*
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||||
import code.name.monkey.retromusic.util.theme.ThemeManager
|
import code.name.monkey.retromusic.util.theme.ThemeManager
|
||||||
|
@ -42,7 +43,7 @@ abstract class AbsThemeActivity : ATHToolbarActivity(), Runnable {
|
||||||
setImmersiveFullscreen()
|
setImmersiveFullscreen()
|
||||||
registerSystemUiVisibility()
|
registerSystemUiVisibility()
|
||||||
toggleScreenOn()
|
toggleScreenOn()
|
||||||
setLightNavigationAuto()
|
setLightNavigationBarAuto()
|
||||||
setLightStatusBarAuto(surfaceColor())
|
setLightStatusBarAuto(surfaceColor())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,6 +58,7 @@ abstract class AbsThemeActivity : ATHToolbarActivity(), Runnable {
|
||||||
com.google.android.material.R.style.ThemeOverlay_Material3_DynamicColors_DayNight
|
com.google.android.material.R.style.ThemeOverlay_Material3_DynamicColors_DayNight
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
setTheme(R.style.FontThemeOverlay)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onWindowFocusChanged(hasFocus: Boolean) {
|
override fun onWindowFocusChanged(hasFocus: Boolean) {
|
||||||
|
|
|
@ -4,6 +4,7 @@ import android.app.ActivityManager
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import android.view.View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.core.view.WindowCompat
|
import androidx.core.view.WindowCompat
|
||||||
|
@ -11,7 +12,6 @@ import androidx.core.view.WindowInsetsCompat
|
||||||
import androidx.core.view.WindowInsetsControllerCompat
|
import androidx.core.view.WindowInsetsControllerCompat
|
||||||
import androidx.core.view.isGone
|
import androidx.core.view.isGone
|
||||||
import androidx.fragment.app.FragmentActivity
|
import androidx.fragment.app.FragmentActivity
|
||||||
import code.name.monkey.appthemehelper.ATH
|
|
||||||
import code.name.monkey.appthemehelper.util.ColorUtil
|
import code.name.monkey.appthemehelper.util.ColorUtil
|
||||||
import code.name.monkey.appthemehelper.util.VersionUtils
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
||||||
import code.name.monkey.retromusic.R
|
import code.name.monkey.retromusic.R
|
||||||
|
@ -57,19 +57,19 @@ private fun AppCompatActivity.hideStatusBar(fullscreen: Boolean) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun AppCompatActivity.setDrawBehindSystemBars() {
|
fun AppCompatActivity.setDrawBehindSystemBars() {
|
||||||
WindowCompat.setDecorFitsSystemWindows(window, false)
|
|
||||||
if (VersionUtils.hasOreo()) {
|
if (VersionUtils.hasOreo()) {
|
||||||
|
WindowCompat.setDecorFitsSystemWindows(window, false)
|
||||||
|
window.navigationBarColor = Color.TRANSPARENT
|
||||||
|
window.statusBarColor = Color.TRANSPARENT
|
||||||
if (VersionUtils.hasQ()) {
|
if (VersionUtils.hasQ()) {
|
||||||
window.isNavigationBarContrastEnforced = false
|
window.isNavigationBarContrastEnforced = false
|
||||||
}
|
}
|
||||||
window.navigationBarColor = Color.TRANSPARENT
|
|
||||||
window.statusBarColor = Color.TRANSPARENT
|
|
||||||
} else {
|
} else {
|
||||||
setNavigationBarColorPreOreo(surfaceColor())
|
setNavigationBarColorPreOreo(surfaceColor())
|
||||||
if (VersionUtils.hasMarshmallow()) {
|
if (VersionUtils.hasMarshmallow()) {
|
||||||
setStatusBarColor(Color.TRANSPARENT)
|
setStatusBarColor(Color.TRANSPARENT)
|
||||||
} else {
|
} else {
|
||||||
setStatusBarColor(surfaceColor())
|
setStatusBarColor(Color.BLACK)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -96,24 +96,49 @@ fun AppCompatActivity.setTaskDescriptionColorAuto() {
|
||||||
setTaskDescriptionColor(surfaceColor())
|
setTaskDescriptionColor(surfaceColor())
|
||||||
}
|
}
|
||||||
|
|
||||||
fun AppCompatActivity.setLightNavigationAuto() {
|
@Suppress("Deprecation")
|
||||||
ATH.setLightNavigationBarAuto(this, surfaceColor())
|
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) {
|
fun AppCompatActivity.setLightStatusBarAuto() {
|
||||||
ATH.setLightStatusBar(this, enabled)
|
setLightStatusBar(surfaceColor().isColorLight)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun AppCompatActivity.setLightStatusBarAuto(bgColor: Int) {
|
fun AppCompatActivity.setLightStatusBarAuto(bgColor: Int) {
|
||||||
setLightStatusBar(ColorUtil.isColorLight(bgColor))
|
setLightStatusBar(bgColor.isColorLight)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Suppress("Deprecation")
|
||||||
fun AppCompatActivity.setLightNavigationBar(enabled: Boolean) {
|
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) {
|
fun AppCompatActivity.setLightNavigationBarAuto(bgColor: Int) {
|
||||||
setLightNavigationBar(ColorUtil.isColorLight(bgColor))
|
setLightNavigationBar(bgColor.isColorLight)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
|
||||||
<style name="Theme.RetroMusic.Base.Adaptive" parent="Theme.Material3.DayNight.NoActionBar">
|
<style name="Theme.RetroMusic.Base.Adaptive" parent="Theme.Material3.DayNight.NoActionBar">
|
||||||
<item name="android:windowActionBarOverlay">true</item>
|
<item name="android:windowActionBarOverlay">true</item>
|
||||||
|
@ -66,6 +66,7 @@
|
||||||
@style/Widget.MaterialComponents.FloatingActionButton
|
@style/Widget.MaterialComponents.FloatingActionButton
|
||||||
</item>
|
</item>
|
||||||
<item name="popupMenuBackground">@drawable/popup_background</item>
|
<item name="popupMenuBackground">@drawable/popup_background</item>
|
||||||
|
<item name="android:enforceNavigationBarContrast" tools:targetApi="q">false</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="Theme.RetroMusic.Base.Light" parent="Theme.Material3.Light.NoActionBar">
|
<style name="Theme.RetroMusic.Base.Light" parent="Theme.Material3.Light.NoActionBar">
|
||||||
|
@ -107,5 +108,4 @@
|
||||||
<item name="android:layout_width">wrap_content</item>
|
<item name="android:layout_width">wrap_content</item>
|
||||||
<item name="android:layout_height">wrap_content</item>
|
<item name="android:layout_height">wrap_content</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
|
@ -6,8 +6,11 @@ import android.content.Context
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR
|
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.annotation.ColorInt
|
||||||
import androidx.appcompat.widget.Toolbar
|
import androidx.appcompat.widget.Toolbar
|
||||||
|
import androidx.core.view.WindowInsetsControllerCompat
|
||||||
import code.name.monkey.appthemehelper.util.ColorUtil
|
import code.name.monkey.appthemehelper.util.ColorUtil
|
||||||
import code.name.monkey.appthemehelper.util.TintHelper
|
import code.name.monkey.appthemehelper.util.TintHelper
|
||||||
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper
|
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper
|
||||||
|
@ -25,90 +28,6 @@ object ATH {
|
||||||
) > since
|
) > 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) {
|
fun setTint(view: View, @ColorInt color: Int) {
|
||||||
TintHelper.setTintAuto(view, color, false)
|
TintHelper.setTintAuto(view, color, false)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue