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 53a47b70b0c16..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); } @@ -701,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(); @@ -717,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);