Update notification dot renderer when we update the taskbar icon size.
Test: swipe to home with an app that has a notification dot
observe no jump in dot size
Bug: 264709741
Change-Id: I5d56fe57e74ed7b094477ecd8727152f3f522042
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java
index 9f9c6f9..0cefb7e 100644
--- a/src/com/android/launcher3/DeviceProfile.java
+++ b/src/com/android/launcher3/DeviceProfile.java
@@ -57,6 +57,7 @@
import java.io.PrintWriter;
import java.util.Locale;
+import java.util.function.Consumer;
@SuppressLint("NewApi")
public class DeviceProfile {
@@ -67,6 +68,7 @@
public static final PointF DEFAULT_SCALE = new PointF(1.0f, 1.0f);
public static final ViewScaleProvider DEFAULT_PROVIDER = itemInfo -> DEFAULT_SCALE;
+ public static final Consumer<DeviceProfile> DEFAULT_DIMENSION_PROVIDER = dp -> {};
// Ratio of empty space, qsb should take up to appear visually centered.
private final float mQsbCenterFactor;
@@ -271,7 +273,8 @@
DeviceProfile(Context context, InvariantDeviceProfile inv, Info info, WindowBounds windowBounds,
SparseArray<DotRenderer> dotRendererCache, boolean isMultiWindowMode,
boolean transposeLayoutWithOrientation, boolean isMultiDisplay, boolean isGestureMode,
- @NonNull final ViewScaleProvider viewScaleProvider) {
+ @NonNull final ViewScaleProvider viewScaleProvider,
+ @NonNull final Consumer<DeviceProfile> dimensionOverrideProvider) {
this.inv = inv;
this.isLandscape = windowBounds.isLandscape();
@@ -571,6 +574,8 @@
mViewScaleProvider = viewScaleProvider;
+ dimensionOverrideProvider.accept(this);
+
// This is done last, after iconSizePx is calculated above.
mDotRendererWorkSpace = createDotRenderer(iconSizePx, dotRendererCache);
mDotRendererAllApps = createDotRenderer(allAppsIconSizePx, dotRendererCache);
@@ -1752,6 +1757,8 @@
private SparseArray<DotRenderer> mDotRendererCache;
+ private Consumer<DeviceProfile> mOverrideProvider;
+
public Builder(Context context, InvariantDeviceProfile inv, Info info) {
mContext = context;
mInv = inv;
@@ -1788,6 +1795,11 @@
return this;
}
+ public Builder withDimensionsOverride(Consumer<DeviceProfile> overrideProvider) {
+ mOverrideProvider = overrideProvider;
+ return this;
+ }
+
/**
* Set the viewScaleProvider for the builder
*
@@ -1817,9 +1829,12 @@
if (mViewScaleProvider == null) {
mViewScaleProvider = DEFAULT_PROVIDER;
}
+ if (mOverrideProvider == null) {
+ mOverrideProvider = DEFAULT_DIMENSION_PROVIDER;
+ }
return new DeviceProfile(mContext, mInv, mInfo, mWindowBounds, mDotRendererCache,
mIsMultiWindowMode, mTransposeLayoutWithOrientation, mIsMultiDisplay,
- mIsGestureMode, mViewScaleProvider);
+ mIsGestureMode, mViewScaleProvider, mOverrideProvider);
}
}