Merge "Improvement for the Bubble Bar Bubbles' Shadows" into main
diff --git a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarView.java b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarView.java
index 5d550ae..af371f2 100644
--- a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarView.java
+++ b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarView.java
@@ -307,6 +307,17 @@
}
}
+ @Override
+ public void setAlpha(float alpha) {
+ super.setAlpha(alpha);
+ int childCount = getChildCount();
+ for (int i = 0; i < childCount; i++) {
+ View childView = getChildAt(i);
+ if (!(childView instanceof BubbleView)) continue;
+ ((BubbleView) childView).setProvideShadowOutline(alpha == 1f);
+ }
+ }
+
/**
* Sets new icon sizes and newBubbleBarPadding between icons and bubble bar borders.
*
diff --git a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleView.java b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleView.java
index 3bcaa16..6db42a4 100644
--- a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleView.java
+++ b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleView.java
@@ -70,6 +70,8 @@
// The current scale value of the dot
private float mDotScale;
+ private boolean mProvideShadowOutline = true;
+
// TODO: (b/273310265) handle RTL
// Whether the bubbles are positioned on the left or right side of the screen
private boolean mOnLeft = false;
@@ -113,17 +115,28 @@
});
}
+ //TODO(b/345490679) remove once proper shadow is applied
+ /** Set whether provide an outline. */
+ public void setProvideShadowOutline(boolean provideOutline) {
+ if (mProvideShadowOutline == provideOutline) return;
+ mProvideShadowOutline = provideOutline;
+ invalidateOutline();
+ }
+
private void getOutline(Outline outline) {
updateBubbleSizeAndDotRender();
final int normalizedSize = IconNormalizer.getNormalizedCircleSize(mBubbleSize);
final int inset = (mBubbleSize - normalizedSize) / 2;
- outline.setOval(inset, inset, inset + normalizedSize, inset + normalizedSize);
+ if (mProvideShadowOutline) {
+ outline.setOval(inset, inset, inset + normalizedSize, inset + normalizedSize);
+ }
}
private void updateBubbleSizeAndDotRender() {
int updatedBubbleSize = Math.min(getWidth(), getHeight());
if (updatedBubbleSize == mBubbleSize) return;
mBubbleSize = updatedBubbleSize;
+ invalidateOutline();
if (mBubble == null || mBubble instanceof BubbleBarOverflow) return;
Path dotPath = ((BubbleBarBubble) mBubble).getDotPath();
mDotRenderer = new DotRenderer(mBubbleSize, dotPath, DEFAULT_PATH_SIZE);