diff --git a/lawnchair/res/values/config.xml b/lawnchair/res/values/config.xml
index a7eefecf0c..d2fe8d35ba 100644
--- a/lawnchair/res/values/config.xml
+++ b/lawnchair/res/values/config.xml
@@ -81,6 +81,9 @@
default
+
+ default
+
lawnchair
diff --git a/lawnchair/res/values/strings.xml b/lawnchair/res/values/strings.xml
index 78a11bed3e..5fa620692d 100644
--- a/lawnchair/res/values/strings.xml
+++ b/lawnchair/res/values/strings.xml
@@ -620,6 +620,7 @@
App drawer columns
Row height
Horizontal padding
+ Background color
Hide from app drawer
diff --git a/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt b/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt
index 93c1b28299..980f538b05 100644
--- a/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt
+++ b/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt
@@ -139,6 +139,14 @@ class PreferenceManager2 private constructor(private val context: Context) : Pre
defaultValue = ColorOption.fromString(context.getString(R.string.config_default_hotseat_bg_color)),
)
+ val appDrawerBackgroundColor = preference(
+ key = stringPreferencesKey(name = "app_drawer_bg_color"),
+ parse = ColorOption::fromString,
+ save = ColorOption::toString,
+ onSet = { reloadHelper.reloadGrid() },
+ defaultValue = ColorOption.fromString(context.getString(R.string.config_default_app_drawer_bg_color)),
+ )
+
val notificationDotColor = preference(
key = stringPreferencesKey(name = "notification_dot_color"),
parse = ColorOption::fromString,
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/components/colorpreference/ColorPreferenceModelList.kt b/lawnchair/src/app/lawnchair/ui/preferences/components/colorpreference/ColorPreferenceModelList.kt
index dad2168d69..e3cb3b5907 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/components/colorpreference/ColorPreferenceModelList.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/components/colorpreference/ColorPreferenceModelList.kt
@@ -31,6 +31,13 @@ class ColorPreferenceModelList(context: Context) {
dynamicEntries = dynamicColorsWithDefault,
),
)
+ registerModel(
+ ColorPreferenceModel(
+ prefObject = prefs.appDrawerBackgroundColor,
+ labelRes = R.string.app_drawer_bg_color_label,
+ dynamicEntries = dynamicColorsWithDefault,
+ ),
+ )
registerModel(
ColorPreferenceModel(
prefObject = prefs.notificationDotColor,
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/destinations/AppDrawerPreferences.kt b/lawnchair/src/app/lawnchair/ui/preferences/destinations/AppDrawerPreferences.kt
index 6743338f3d..c91684dfc3 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/destinations/AppDrawerPreferences.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/destinations/AppDrawerPreferences.kt
@@ -26,6 +26,7 @@ import app.lawnchair.preferences2.preferenceManager2
import app.lawnchair.ui.preferences.LocalIsExpandedScreen
import app.lawnchair.ui.preferences.components.NavigationActionPreference
import app.lawnchair.ui.preferences.components.SuggestionsPreference
+import app.lawnchair.ui.preferences.components.colorpreference.ColorPreference
import app.lawnchair.ui.preferences.components.controls.SliderPreference
import app.lawnchair.ui.preferences.components.controls.SwitchPreference
import app.lawnchair.ui.preferences.components.layout.DividerColumn
@@ -53,6 +54,7 @@ fun AppDrawerPreferences(
modifier = modifier,
) {
PreferenceGroup(heading = stringResource(id = R.string.general_label)) {
+ ColorPreference(preference = prefs2.appDrawerBackgroundColor)
SliderPreference(
label = stringResource(id = R.string.background_opacity),
adapter = prefs.drawerOpacity.getAdapter(),
diff --git a/lawnchair/src/app/lawnchair/util/LawnchairUtils.kt b/lawnchair/src/app/lawnchair/util/LawnchairUtils.kt
index 8cde0de970..02e803b622 100644
--- a/lawnchair/src/app/lawnchair/util/LawnchairUtils.kt
+++ b/lawnchair/src/app/lawnchair/util/LawnchairUtils.kt
@@ -45,6 +45,7 @@ import androidx.core.graphics.ColorUtils
import androidx.core.os.UserManagerCompat
import app.lawnchair.preferences.PreferenceManager
import app.lawnchair.preferences2.PreferenceManager2
+import app.lawnchair.theme.color.ColorOption
import app.lawnchair.theme.color.tokens.ColorTokens
import com.android.launcher3.R
import com.android.launcher3.Utilities
@@ -175,7 +176,13 @@ fun getFolderBackgroundAlpha(context: Context): Int {
fun getAllAppsScrimColor(context: Context): Int {
val opacity = PreferenceManager.getInstance(context).drawerOpacity.get()
- val scrimColor = ColorTokens.AllAppsScrimColor.resolveColor(context)
+ val prefs2 = PreferenceManager2.getInstance(context)
+ var scrimColor = ColorTokens.AllAppsScrimColor.resolveColor(context)
+ val colorOptions: ColorOption = prefs2.appDrawerBackgroundColor.firstBlocking()
+ val color = colorOptions.colorPreferenceEntry.lightColor.invoke(context)
+ if (color != 0) {
+ scrimColor = color
+ }
val alpha = (opacity * 255).roundToInt()
return ColorUtils.setAlphaComponent(scrimColor, alpha)
}
diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/AllAppsState.java b/quickstep/src/com/android/launcher3/uioverrides/states/AllAppsState.java
index 2043bf6cab..1f1fe62720 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/states/AllAppsState.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/states/AllAppsState.java
@@ -217,6 +217,8 @@ public class AllAppsState extends LauncherState {
@Override
public int getWorkspaceScrimColor(Launcher launcher) {
- return LawnchairUtilsKt.getAllAppsScrimColor(launcher);
+ return launcher.getDeviceProfile().isTablet
+ ? launcher.getResources().getColor(android.R.color.transparent)
+ : LawnchairUtilsKt.getAllAppsScrimColor(launcher);
}
}
diff --git a/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java b/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java
index e526114105..751ac7fd1d 100644
--- a/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java
+++ b/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java
@@ -151,7 +151,7 @@ public class ActivityAllAppsContainerView
protected WorkProfileManager mWorkManager;
protected final PrivateProfileManager mPrivateProfileManager;
protected final Point mFastScrollerOffset = new Point();
- protected final int mScrimColor;
+ protected int mScrimColor;
protected final float mHeaderThreshold;
protected final AllAppsSearchUiDelegate mSearchUiDelegate;
@@ -832,6 +832,11 @@ public class ActivityAllAppsContainerView
protected int getHeaderColor(float blendRatio) {
var opacity = pref.getDrawerOpacity().get();
+ var colorOptions = PreferenceExtensionsKt.firstBlocking(pref2.getAppDrawerBackgroundColor());
+ var color = colorOptions.getColorPreferenceEntry().getLightColor().invoke(mContext);
+ if (color != 0) {
+ mScrimColor = color;
+ }
return ColorUtils.setAlphaComponent(
ColorUtils.blendARGB(mScrimColor, mHeaderProtectionColor, blendRatio),
Math.round(opacity * 255));