From 50bcd6ca2b645ef6d6d2be04c62deff57c3a044a Mon Sep 17 00:00:00 2001 From: Mady Mellor Date: Wed, 12 May 2021 23:01:17 -0700 Subject: Update the sizes for bubble expanded view * 16dp on either side / from edge of screen for the bubble view * 16dp between bubble row & expanded bubble rect (works out to 5dp in code: 16dp - 2dp (badge overhang) - 9dp (pointer height) * max 8dp between the bubbles in the top row * manage button has some adjustments - 8dp above & below and is total 32dp from edge of screen; ensure manage button is centered between bottom inset & bottom of expanded view * fixes a bug where there was extra padding being at top of expanded view in landscape mode * removed an unused layout file & unused dimens Test: visual - expand a bubble, look at spacing of everything on screen; do the same in landscape from left and right edges of the screen. Bug: 187715439 Bug: 183658029 Change-Id: I29e699aaf9b6e7bf75447dac6aa6b00a7b272b8b --- .../Shell/res/layout/bubble_manage_button.xml | 3 +- .../Shell/res/layout/bubble_menu_view.xml | 45 ---------------------- libs/WindowManager/Shell/res/values/dimen.xml | 15 ++------ .../wm/shell/bubbles/BubbleExpandedView.java | 21 +++++----- .../android/wm/shell/bubbles/BubblePositioner.java | 28 ++++++++------ .../android/wm/shell/bubbles/BubbleStackView.java | 4 +- .../animation/ExpandedAnimationController.java | 9 ++--- 7 files changed, 37 insertions(+), 88 deletions(-) delete mode 100644 libs/WindowManager/Shell/res/layout/bubble_menu_view.xml (limited to 'libs') diff --git a/libs/WindowManager/Shell/res/layout/bubble_manage_button.xml b/libs/WindowManager/Shell/res/layout/bubble_manage_button.xml index ab02a2e6f91a..c09ae53746da 100644 --- a/libs/WindowManager/Shell/res/layout/bubble_manage_button.xml +++ b/libs/WindowManager/Shell/res/layout/bubble_manage_button.xml @@ -22,7 +22,8 @@ android:layout_width="wrap_content" android:layout_height="40dp" android:layout_marginTop="8dp" - android:layout_marginLeft="8dp" + android:layout_marginLeft="16dp" + android:layout_marginBottom="8dp" android:focusable="true" android:text="@string/manage_bubbles_text" android:textSize="@*android:dimen/text_size_body_2_material" diff --git a/libs/WindowManager/Shell/res/layout/bubble_menu_view.xml b/libs/WindowManager/Shell/res/layout/bubble_menu_view.xml deleted file mode 100644 index d19b65394cd8..000000000000 --- a/libs/WindowManager/Shell/res/layout/bubble_menu_view.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - diff --git a/libs/WindowManager/Shell/res/values/dimen.xml b/libs/WindowManager/Shell/res/values/dimen.xml index a58202857cfc..e32d3251f788 100644 --- a/libs/WindowManager/Shell/res/values/dimen.xml +++ b/libs/WindowManager/Shell/res/values/dimen.xml @@ -85,13 +85,6 @@ 16dp - - 20dp - 20dp - 12dp - 4dp - 22dp - 1dp @@ -109,7 +102,7 @@ 16dp - 16dp + 8dp 60dp @@ -119,7 +112,7 @@ 52dp - 4dp + 16dp 8dp @@ -151,7 +144,7 @@ 16dp - 48dp + 56dp 60dp @@ -170,7 +163,7 @@ 120dp - 8dp + 5dp 40dp 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 f5c453d942e1..158babe25652 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 @@ -113,7 +113,6 @@ public class BubbleExpandedView extends LinearLayout { private ShapeDrawable mTopPointer; private ShapeDrawable mLeftPointer; private ShapeDrawable mRightPointer; - private int mExpandedViewPadding; private float mCornerRadius = 0f; private int mBackgroundColorFloating; @@ -349,7 +348,6 @@ public class BubbleExpandedView extends LinearLayout { Resources res = getResources(); mMinHeight = res.getDimensionPixelSize(R.dimen.bubble_expanded_default_height); mOverflowHeight = res.getDimensionPixelSize(R.dimen.bubble_overflow_height); - mExpandedViewPadding = res.getDimensionPixelSize(R.dimen.bubble_expanded_view_padding); updateFontSize(); @@ -667,13 +665,15 @@ public class BubbleExpandedView extends LinearLayout { ? mExpandedViewContainerLocation[1] - mPositioner.getInsets().top : 0; int settingsHeight = mIsOverflow ? 0 : mManageButtonHeight; + int pointerHeight = mPositioner.showBubblesVertically() + ? mPointerWidth + : (int) (mPointerHeight - mPointerOverlap + mPointerMargin); return mPositioner.getAvailableRect().height() - expandedContainerY - getPaddingTop() - getPaddingBottom() - settingsHeight - - mPointerHeight - - mPointerMargin; + - pointerHeight; } /** @@ -721,15 +721,14 @@ public class BubbleExpandedView extends LinearLayout { : 0; final float paddingRight = (showVertically && !onLeft) ? mPointerHeight - mPointerOverlap : 0; - final int paddingTop = showVertically ? 0 - : mExpandedViewPadding; - setPadding((int) paddingLeft, paddingTop, (int) paddingRight, 0); + final float paddingTop = showVertically ? 0 + : mPointerHeight - mPointerOverlap; + setPadding((int) paddingLeft, (int) paddingTop, (int) paddingRight, 0); final float expandedViewY = mPositioner.getExpandedViewY(); - final float bubbleSize = mPositioner.getBubbleBitmapSize(); final float bubbleCenter = showVertically - ? bubblePosition + (bubbleSize / 2f) - expandedViewY - : bubblePosition + (bubbleSize / 2f); + ? bubblePosition + (mPositioner.getBubbleSize() / 2f) - expandedViewY + : bubblePosition + (mPositioner.getBubbleBitmapSize() / 2f) - mPointerWidth; // Post because we need the width of the view post(() -> { float pointerY; @@ -741,7 +740,7 @@ public class BubbleExpandedView extends LinearLayout { : getWidth() - mPaddingRight - mPointerOverlap; } else { pointerY = mPointerOverlap; - pointerX = bubbleCenter - mPaddingLeft - (mPointerWidth / 2f); + pointerX = bubbleCenter - (mPointerWidth / 2f); } mPointerView.setTranslationY(pointerY); mPointerView.setTranslationX(pointerX); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java index ae1a053ae19e..65a0ddab64fc 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java @@ -72,12 +72,13 @@ public class BubblePositioner { private int mBubbleBitmapSize; private int mExpandedViewLargeScreenWidth; private int mExpandedViewPadding; - private int mPointerHeight; - private int mBubblePaddingTop; + private int mPointerMargin; + private float mPointerWidth; + private float mPointerHeight; private PointF mPinLocation; private PointF mRestingStackPosition; - private int[] mLeftRightPadding = new int[2]; + private int[] mPaddings = new int[4]; private boolean mIsLargeScreen; private boolean mShowingInTaskbar; @@ -154,8 +155,9 @@ public class BubblePositioner { mExpandedViewLargeScreenWidth = res.getDimensionPixelSize( R.dimen.bubble_expanded_view_tablet_width); mExpandedViewPadding = res.getDimensionPixelSize(R.dimen.bubble_expanded_view_padding); + mPointerWidth = res.getDimensionPixelSize(R.dimen.bubble_pointer_width); mPointerHeight = res.getDimensionPixelSize(R.dimen.bubble_pointer_height); - mBubblePaddingTop = res.getDimensionPixelSize(R.dimen.bubble_padding_top); + mPointerMargin = res.getDimensionPixelSize(R.dimen.bubble_pointer_margin); if (mShowingInTaskbar) { adjustForTaskbar(); } @@ -251,30 +253,32 @@ public class BubblePositioner { final boolean isLargeOrOverflow = mIsLargeScreen || isOverflow; if (showBubblesVertically()) { if (!onLeft) { - rightPadding += mPointerHeight + mBubbleSize; + rightPadding += mBubbleSize - mPointerHeight; leftPadding += isLargeOrOverflow ? (mPositionRect.width() - rightPadding - mExpandedViewLargeScreenWidth) : 0; } else { - //TODO: pointer height should be padding between pointer & bubbles here & above - leftPadding += mPointerHeight + mBubbleSize; + leftPadding += mBubbleSize - mPointerHeight; rightPadding += isLargeOrOverflow ? (mPositionRect.width() - leftPadding - mExpandedViewLargeScreenWidth) : 0; } } - mLeftRightPadding[0] = leftPadding; - mLeftRightPadding[1] = rightPadding; - return mLeftRightPadding; + // [left, top, right, bottom] + mPaddings[0] = leftPadding; + mPaddings[1] = showBubblesVertically() ? 0 : mPointerMargin; + mPaddings[2] = rightPadding; + mPaddings[3] = 0; + return mPaddings; } /** Calculates the y position of the expanded view when it is expanded. */ public float getExpandedViewY() { final int top = getAvailableRect().top; if (showBubblesVertically()) { - return top + mExpandedViewPadding; + return top - mPointerWidth; } else { - return top + mBubbleSize + mBubblePaddingTop; + return top + mBubbleSize + mPointerMargin; } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java index 64a3b8f0da32..c6a9c108135f 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java @@ -247,7 +247,6 @@ public class BubbleStackView extends FrameLayout private int mBubbleElevation; private int mBubbleTouchPadding; private int mExpandedViewPadding; - private int mPointerHeight; private int mCornerRadius; private int mImeOffset; @Nullable private BubbleViewProvider mExpandedBubble; @@ -767,7 +766,6 @@ public class BubbleStackView extends FrameLayout mBubbleSize = res.getDimensionPixelSize(R.dimen.individual_bubble_size); mBubbleElevation = res.getDimensionPixelSize(R.dimen.bubble_elevation); mBubbleTouchPadding = res.getDimensionPixelSize(R.dimen.bubble_touch_padding); - mPointerHeight = res.getDimensionPixelSize(R.dimen.bubble_pointer_height); mImeOffset = res.getDimensionPixelSize(R.dimen.pip_ime_offset); mExpandedViewPadding = res.getDimensionPixelSize(R.dimen.bubble_expanded_view_padding); @@ -2700,7 +2698,7 @@ public class BubbleStackView extends FrameLayout && BubbleOverflow.KEY.equals(mExpandedBubble.getKey()); int[] paddings = mPositioner.getExpandedViewPadding( mStackAnimationController.isStackOnLeftSide(), isOverflowExpanded); - mExpandedViewContainer.setPadding(paddings[0], 0, paddings[1], 0); + mExpandedViewContainer.setPadding(paddings[0], paddings[1], paddings[2], paddings[3]); if (mIsExpansionAnimating) { mExpandedViewContainer.setVisibility(mIsExpanded ? VISIBLE : GONE); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/ExpandedAnimationController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/ExpandedAnimationController.java index fc499572bbc3..7f55403ba33c 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/ExpandedAnimationController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/ExpandedAnimationController.java @@ -208,7 +208,6 @@ public class ExpandedAnimationController Resources res = mLayout.getContext().getResources(); mBubblePaddingTop = res.getDimensionPixelSize(R.dimen.bubble_padding_top); mStackOffsetPx = res.getDimensionPixelSize(R.dimen.bubble_stack_offset); - mBubblePaddingTop = res.getDimensionPixelSize(R.dimen.bubble_padding_top); mBubbleSizePx = mPositioner.getBubbleSize(); mBubblesMaxRendered = res.getInteger(R.integer.bubbles_max_rendered); mBubblesMaxSpace = res.getDimensionPixelSize(R.dimen.bubble_max_spacing); @@ -276,8 +275,8 @@ public class ExpandedAnimationController boolean onLeft = mCollapsePoint != null && mCollapsePoint.x < (availableRect.width() / 2f); float translationX = onLeft - ? availableRect.left + mExpandedViewPadding - : availableRect.right - mBubbleSizePx - mExpandedViewPadding; + ? availableRect.left + : availableRect.right - mBubbleSizePx; path.lineTo(translationX, getBubbleXOrYForOrientation(index)); } else { path.lineTo(getBubbleXOrYForOrientation(index), expandedY); @@ -621,8 +620,8 @@ public class ExpandedAnimationController && mCollapsePoint.x < (availableRect.width() / 2f); animationForChild(bubble) .translationX(onLeft - ? availableRect.left + mExpandedViewPadding - : availableRect.right - mBubbleSizePx - mExpandedViewPadding) + ? availableRect.left + : availableRect.right - mBubbleSizePx) .translationY(getBubbleXOrYForOrientation(i)) .start(); } else { -- cgit v1.2.3-59-g8ed1b