fix(theme): set correct surface color when using dynamic colors or amoled theme

Surface colors have changed in material components 1.11.0

Closes #673
This commit is contained in:
Jarne Demeulemeester 2024-03-02 23:52:07 +01:00
parent c30b76d4f1
commit 0a1582f47b
No known key found for this signature in database
GPG key ID: 1E5C6AFBD622E9F5
4 changed files with 20 additions and 3 deletions

View file

@ -10,9 +10,11 @@ import coil.decode.SvgDecoder
import coil.disk.DiskCache import coil.disk.DiskCache
import coil.request.CachePolicy import coil.request.CachePolicy
import com.google.android.material.color.DynamicColors import com.google.android.material.color.DynamicColors
import com.google.android.material.color.DynamicColorsOptions
import dagger.hilt.android.HiltAndroidApp import dagger.hilt.android.HiltAndroidApp
import timber.log.Timber import timber.log.Timber
import javax.inject.Inject import javax.inject.Inject
import dev.jdtech.jellyfin.core.R as CoreR
@HiltAndroidApp @HiltAndroidApp
class BaseApplication : Application(), Configuration.Provider, ImageLoaderFactory { class BaseApplication : Application(), Configuration.Provider, ImageLoaderFactory {
@ -40,7 +42,12 @@ class BaseApplication : Application(), Configuration.Provider, ImageLoaderFactor
"dark" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) "dark" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
} }
if (appPreferences.dynamicColors) DynamicColors.applyToActivitiesIfAvailable(this) if (appPreferences.dynamicColors) {
val dynamicColorsOptions = DynamicColorsOptions.Builder()
.setThemeOverlay(CoreR.style.ThemeOverlay_Findroid_DynamicColors)
.build()
DynamicColors.applyToActivitiesIfAvailable(this, dynamicColorsOptions)
}
} }
override fun newImageLoader(): ImageLoader { override fun newImageLoader(): ImageLoader {

View file

@ -149,7 +149,7 @@ class MainActivity : AppCompatActivity() {
private fun applyTheme() { private fun applyTheme() {
if (appPreferences.amoledTheme) { if (appPreferences.amoledTheme) {
setTheme(CoreR.style.Theme_FindroidAMOLED) setTheme(CoreR.style.ThemeOverlay_Findroid_Amoled)
} }
} }
} }

View file

@ -17,9 +17,12 @@
<item name="colorSurface">@color/neutral_900</item> <item name="colorSurface">@color/neutral_900</item>
</style> </style>
<style name="Theme.FindroidAMOLED" parent=""> <style name="ThemeOverlay.Findroid.Amoled" parent="">
<!-- Surface --> <!-- Surface -->
<item name="android:colorBackground">@android:color/black</item> <item name="android:colorBackground">@android:color/black</item>
<item name="colorSurface">@android:color/black</item> <item name="colorSurface">@android:color/black</item>
<item name="colorSurfaceContainer">?attr/colorSurface</item>
<item name="colorSurfaceContainerLow">?attr/colorSurface</item>
<item name="colorSurfaceContainerHigh">?attr/colorSurface</item>
</style> </style>
</resources> </resources>

View file

@ -24,6 +24,9 @@
<!-- Surface --> <!-- Surface -->
<item name="android:colorBackground">@color/neutral_50</item> <item name="android:colorBackground">@color/neutral_50</item>
<item name="colorSurface">@color/neutral_100</item> <item name="colorSurface">@color/neutral_100</item>
<item name="colorSurfaceContainer">?attr/colorSurface</item>
<item name="colorSurfaceContainerLow">?attr/colorSurface</item>
<item name="colorSurfaceContainerHigh">?attr/colorSurface</item>
<!-- Error --> <!-- Error -->
<item name="colorError">@color/red</item> <item name="colorError">@color/red</item>
@ -53,6 +56,10 @@
<item name="preferenceTheme">@style/ThemeOverlay.Findroid.Preference</item> <item name="preferenceTheme">@style/ThemeOverlay.Findroid.Preference</item>
</style> </style>
<style name="ThemeOverlay.Findroid.DynamicColors" parent="ThemeOverlay.Material3.DynamicColors.DayNight">
<item name="android:navigationBarColor">?attr/colorSurfaceContainer</item>
</style>
<string-array name="themes"> <string-array name="themes">
<item>@string/theme_system</item> <item>@string/theme_system</item>
<item>@string/theme_light</item> <item>@string/theme_light</item>