diff --git a/libs/WindowManager/Shell/res/drawable/bubble_manage_btn_bg.xml b/libs/WindowManager/Shell/res/drawable/bubble_manage_btn_bg.xml
new file mode 100644
index 0000000000000..8710fb8ac69b2
--- /dev/null
+++ b/libs/WindowManager/Shell/res/drawable/bubble_manage_btn_bg.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/libs/WindowManager/Shell/res/layout/bubble_expanded_view.xml b/libs/WindowManager/Shell/res/layout/bubble_expanded_view.xml
index 33e009efd3716..cd15f25877fdb 100644
--- a/libs/WindowManager/Shell/res/layout/bubble_expanded_view.xml
+++ b/libs/WindowManager/Shell/res/layout/bubble_expanded_view.xml
@@ -28,15 +28,18 @@
/>
diff --git a/libs/WindowManager/Shell/res/values/dimen.xml b/libs/WindowManager/Shell/res/values/dimen.xml
index 9b1beb3c9ab59..f4c4d025908ed 100644
--- a/libs/WindowManager/Shell/res/values/dimen.xml
+++ b/libs/WindowManager/Shell/res/values/dimen.xml
@@ -139,10 +139,15 @@
200dp
50dp
-
- 8dp
-
+
+ 10dp
+
12dp
+
+ 2dp
+
+ 1dp
16dp
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java
index 7755cc0e6aedd..6a68b06527bea 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java
@@ -39,7 +39,9 @@ import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.Color;
+import android.graphics.CornerPathEffect;
import android.graphics.Outline;
+import android.graphics.Paint;
import android.graphics.Picture;
import android.graphics.Rect;
import android.graphics.drawable.ShapeDrawable;
@@ -105,6 +107,9 @@ public class BubbleExpandedView extends LinearLayout {
private int mSettingsIconHeight;
private int mPointerWidth;
private int mPointerHeight;
+ private float mPointerRadius;
+ private float mPointerOverlap;
+ private CornerPathEffect mPointerEffect;
private ShapeDrawable mCurrentPointer;
private ShapeDrawable mTopPointer;
private ShapeDrawable mLeftPointer;
@@ -348,7 +353,9 @@ public class BubbleExpandedView extends LinearLayout {
mPointerMargin = res.getDimensionPixelSize(R.dimen.bubble_pointer_margin);
mPointerWidth = res.getDimensionPixelSize(R.dimen.bubble_pointer_width);
mPointerHeight = res.getDimensionPixelSize(R.dimen.bubble_pointer_height);
-
+ mPointerRadius = getResources().getDimensionPixelSize(R.dimen.bubble_pointer_radius);
+ mPointerEffect = new CornerPathEffect(mPointerRadius);
+ mPointerOverlap = getResources().getDimensionPixelSize(R.dimen.bubble_pointer_overlap);
mTopPointer = new ShapeDrawable(TriangleShape.create(
mPointerWidth, mPointerHeight, true /* pointUp */));
mLeftPointer = new ShapeDrawable(TriangleShape.createHorizontal(
@@ -408,8 +415,12 @@ public class BubbleExpandedView extends LinearLayout {
lp.width = mPointerWidth;
lp.height = mPointerHeight;
}
- mPointerView.setLayoutParams(lp);
mCurrentPointer.setTint(mBackgroundColorFloating);
+
+ Paint arrowPaint = mCurrentPointer.getPaint();
+ arrowPaint.setColor(mBackgroundColorFloating);
+ arrowPaint.setPathEffect(mPointerEffect);
+ mPointerView.setLayoutParams(lp);
mPointerView.setBackground(mCurrentPointer);
}
@@ -651,11 +662,12 @@ public class BubbleExpandedView extends LinearLayout {
// Remove top insets back here because availableRect.height would account for that
? mExpandedViewContainerLocation[1] - mPositioner.getInsets().top
: 0;
+ int settingsHeight = mIsOverflow ? 0 : mSettingsIconHeight;
return mPositioner.getAvailableRect().height()
- expandedContainerY
- getPaddingTop()
- getPaddingBottom()
- - mSettingsIconHeight
+ - settingsHeight
- mPointerHeight
- mPointerMargin;
}
@@ -700,10 +712,14 @@ public class BubbleExpandedView extends LinearLayout {
public void setPointerPosition(float bubblePosition, boolean onLeft) {
// Pointer gets drawn in the padding
final boolean showVertically = mPositioner.showBubblesVertically();
- final int paddingLeft = (showVertically && onLeft) ? mPointerHeight : 0;
- final int paddingRight = (showVertically && !onLeft) ? mPointerHeight : 0;
- final int paddingTop = showVertically ? 0 : mExpandedViewPadding;
- setPadding(paddingLeft, paddingTop, paddingRight, 0);
+ final float paddingLeft = (showVertically && onLeft)
+ ? mPointerHeight - mPointerOverlap
+ : 0;
+ final float paddingRight = (showVertically && !onLeft)
+ ? mPointerHeight - mPointerOverlap : 0;
+ final int paddingTop = showVertically ? 0
+ : mExpandedViewPadding;
+ setPadding((int) paddingLeft, paddingTop, (int) paddingRight, 0);
final float expandedViewY = mPositioner.getExpandedViewY();
final float bubbleSize = mPositioner.getBubbleBitmapSize();
@@ -716,9 +732,11 @@ public class BubbleExpandedView extends LinearLayout {
float pointerX;
if (showVertically) {
pointerY = bubbleCenter - (mPointerWidth / 2f);
- pointerX = onLeft ? -mPointerHeight : getWidth() - mPaddingRight;
+ pointerX = onLeft
+ ? -mPointerHeight + mPointerOverlap
+ : getWidth() - mPaddingRight - mPointerOverlap;
} else {
- pointerY = 0;
+ pointerY = mPointerOverlap;
pointerX = bubbleCenter - mPaddingLeft - (mPointerWidth / 2f);
}
mPointerView.setTranslationY(pointerY);