From 13e672aa76d1fa3f4e27589a8d24fa66992295df Mon Sep 17 00:00:00 2001 From: Brian Isganitis Date: Fri, 31 Mar 2023 16:40:49 -0400 Subject: [PATCH] Make navbar scrim taskbar background if taskbar is enabled. This ensures the navbar buttons are visible on large screens where All Apps or Widgets picker are bottom sheets. Test: Scrim is taskbar background color on devices with taskbar. Bug: 264463659 Change-Id: I37890c0f542db625f9aeae7648bbaed064c4d240 --- .../allapps/ActivityAllAppsContainerView.java | 8 +++++++- src/com/android/launcher3/util/Themes.java | 11 +++++++++++ .../launcher3/widget/BaseWidgetSheet.java | 16 ++++++++++++++-- 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java b/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java index c3ac53ea61..93c7e0e525 100644 --- a/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java +++ b/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java @@ -184,7 +184,7 @@ public class ActivityAllAppsContainerView this, mActivityContext.getStatsLogManager()); mAH = Arrays.asList(null, null, null); mNavBarScrimPaint = new Paint(); - mNavBarScrimPaint.setColor(Themes.getAttrColor(context, R.attr.allAppsNavBarScrimColor)); + mNavBarScrimPaint.setColor(Themes.getNavBarScrimColor(mActivityContext)); AllAppsStore.OnUpdateListener onAppsUpdated = this::onAppsUpdated; if (TestProtocol.sDebugTracing) { @@ -810,6 +810,12 @@ public class ActivityAllAppsContainerView } } updateBackground(dp); + + int navBarScrimColor = Themes.getNavBarScrimColor(mActivityContext); + if (mNavBarScrimPaint.getColor() != navBarScrimColor) { + mNavBarScrimPaint.setColor(navBarScrimColor); + invalidate(); + } } protected void updateBackground(DeviceProfile deviceProfile) { diff --git a/src/com/android/launcher3/util/Themes.java b/src/com/android/launcher3/util/Themes.java index 5526839ce7..a5c663f72a 100644 --- a/src/com/android/launcher3/util/Themes.java +++ b/src/com/android/launcher3/util/Themes.java @@ -32,10 +32,13 @@ import android.util.AttributeSet; import android.util.SparseArray; import android.util.TypedValue; +import androidx.annotation.ColorInt; + import com.android.launcher3.LauncherPrefs; import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.icons.GraphicsUtils; +import com.android.launcher3.views.ActivityContext; /** * Various utility methods associated with theming. @@ -198,4 +201,12 @@ public class Themes { return result; } + + /** Returns the desired navigation bar scrim color depending on the {@code DeviceProfile}. */ + @ColorInt + public static int getNavBarScrimColor(T context) { + return context.getDeviceProfile().isTaskbarPresent + ? context.getColor(R.color.taskbar_background) + : Themes.getAttrColor(context, R.attr.allAppsNavBarScrimColor); + } } diff --git a/src/com/android/launcher3/widget/BaseWidgetSheet.java b/src/com/android/launcher3/widget/BaseWidgetSheet.java index 07c6ba4628..c3f26fa663 100644 --- a/src/com/android/launcher3/widget/BaseWidgetSheet.java +++ b/src/com/android/launcher3/widget/BaseWidgetSheet.java @@ -37,6 +37,7 @@ import androidx.annotation.Px; import androidx.core.view.ViewCompat; import com.android.launcher3.DeviceProfile; +import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener; import com.android.launcher3.DragSource; import com.android.launcher3.DropTarget.DragObject; import com.android.launcher3.Insettable; @@ -60,7 +61,7 @@ import com.android.launcher3.views.ArrowTipView; */ public abstract class BaseWidgetSheet extends AbstractSlideInView implements OnClickListener, OnLongClickListener, DragSource, - PopupDataProvider.PopupDataChangeListener, Insettable { + PopupDataProvider.PopupDataChangeListener, Insettable, OnDeviceProfileChangeListener { /** The default number of cells that can fit horizontally in a widget sheet. */ public static final int DEFAULT_MAX_HORIZONTAL_SPANS = 4; @@ -84,7 +85,7 @@ public abstract class BaseWidgetSheet extends AbstractSlideInView mWidgetCellHorizontalPadding = getResources().getDimensionPixelSize( R.dimen.widget_cell_horizontal_padding); mNavBarScrimPaint = new Paint(); - mNavBarScrimPaint.setColor(Themes.getAttrColor(context, R.attr.allAppsNavBarScrimColor)); + mNavBarScrimPaint.setColor(Themes.getNavBarScrimColor(mActivityContext)); } protected int getScrimColor(Context context) { @@ -98,12 +99,23 @@ public abstract class BaseWidgetSheet extends AbstractSlideInView .normalizeWindowInsets(getContext(), getRootWindowInsets(), new Rect()); mNavBarScrimHeight = getNavBarScrimHeight(windowInsets); mActivityContext.getPopupDataProvider().setChangeListener(this); + mActivityContext.addOnDeviceProfileChangeListener(this); } @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); mActivityContext.getPopupDataProvider().setChangeListener(null); + mActivityContext.removeOnDeviceProfileChangeListener(this); + } + + @Override + public void onDeviceProfileChanged(DeviceProfile dp) { + int navBarScrimColor = Themes.getNavBarScrimColor(mActivityContext); + if (mNavBarScrimPaint.getColor() != navBarScrimColor) { + mNavBarScrimPaint.setColor(navBarScrimColor); + invalidate(); + } } @Override