From 3d75ffe6a7a39efdebe13dbd07c937c1de409ead Mon Sep 17 00:00:00 2001 From: alieRN <45766489+aliernfrog@users.noreply.github.com> Date: Sat, 25 Oct 2025 06:46:50 +0300 Subject: [PATCH] feat: Add pure black theme (#2824) --- app/src/main/java/app/revanced/manager/MainActivity.kt | 4 +++- .../manager/domain/manager/PreferencesManager.kt | 1 + .../manager/ui/screen/settings/GeneralSettingsScreen.kt | 9 +++++++++ app/src/main/java/app/revanced/manager/ui/theme/Theme.kt | 5 +++++ app/src/main/res/values/strings.xml | 2 ++ 5 files changed, 20 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/app/revanced/manager/MainActivity.kt b/app/src/main/java/app/revanced/manager/MainActivity.kt index c847260e..7b6dbd2a 100644 --- a/app/src/main/java/app/revanced/manager/MainActivity.kt +++ b/app/src/main/java/app/revanced/manager/MainActivity.kt @@ -81,6 +81,7 @@ class MainActivity : ComponentActivity() { ) val theme by vm.prefs.theme.getAsState() val dynamicColor by vm.prefs.dynamicColor.getAsState() + val pureBlackTheme by vm.prefs.pureBlackTheme.getAsState() EventEffect(vm.legacyImportActivityFlow) { try { @@ -91,7 +92,8 @@ class MainActivity : ComponentActivity() { ReVancedManagerTheme( darkTheme = theme == Theme.SYSTEM && isSystemInDarkTheme() || theme == Theme.DARK, - dynamicColor = dynamicColor + dynamicColor = dynamicColor, + pureBlackTheme = pureBlackTheme ) { ReVancedManager(vm) } diff --git a/app/src/main/java/app/revanced/manager/domain/manager/PreferencesManager.kt b/app/src/main/java/app/revanced/manager/domain/manager/PreferencesManager.kt index b9363df6..ef69c3e2 100644 --- a/app/src/main/java/app/revanced/manager/domain/manager/PreferencesManager.kt +++ b/app/src/main/java/app/revanced/manager/domain/manager/PreferencesManager.kt @@ -9,6 +9,7 @@ class PreferencesManager( context: Context ) : BasePreferencesManager(context, "settings") { val dynamicColor = booleanPreference("dynamic_color", true) + val pureBlackTheme = booleanPreference("pure_black_theme", false) val theme = enumPreference("theme", Theme.SYSTEM) val api = stringPreference("api_url", "https://api.revanced.app") diff --git a/app/src/main/java/app/revanced/manager/ui/screen/settings/GeneralSettingsScreen.kt b/app/src/main/java/app/revanced/manager/ui/screen/settings/GeneralSettingsScreen.kt index 16dc0a65..4fc00c17 100644 --- a/app/src/main/java/app/revanced/manager/ui/screen/settings/GeneralSettingsScreen.kt +++ b/app/src/main/java/app/revanced/manager/ui/screen/settings/GeneralSettingsScreen.kt @@ -1,6 +1,7 @@ package app.revanced.manager.ui.screen.settings import android.os.Build +import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -96,6 +97,14 @@ fun GeneralSettingsScreen( description = R.string.dynamic_color_description ) } + AnimatedVisibility(theme != Theme.LIGHT) { + BooleanItem( + preference = prefs.pureBlackTheme, + coroutineScope = coroutineScope, + headline = R.string.pure_black_theme, + description = R.string.pure_black_theme_description + ) + } } } } diff --git a/app/src/main/java/app/revanced/manager/ui/theme/Theme.kt b/app/src/main/java/app/revanced/manager/ui/theme/Theme.kt index 17c89a5c..376c1b39 100644 --- a/app/src/main/java/app/revanced/manager/ui/theme/Theme.kt +++ b/app/src/main/java/app/revanced/manager/ui/theme/Theme.kt @@ -80,6 +80,7 @@ private val LightColorScheme = lightColorScheme( fun ReVancedManagerTheme( darkTheme: Boolean, dynamicColor: Boolean, + pureBlackTheme: Boolean, content: @Composable () -> Unit ) { val colorScheme = when { @@ -93,6 +94,10 @@ fun ReVancedManagerTheme( darkTheme -> DarkColorScheme else -> LightColorScheme + }.let { + if (darkTheme && pureBlackTheme) + it.copy(background = Color.Black, surface = Color.Black) + else it } val view = LocalView.current diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f131066e..d9a7c6a0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -86,6 +86,8 @@ View the contributors of ReVanced Dynamic color Adapt colors to the wallpaper + Pure black theme + Use pure black backgrounds for dark theme Theme Choose between light or dark theme Safeguards