Fix issues with landscape transition
Bug: 158675544
Bug: 158675318
Test: manual - rotate phone to landscape, with stack expanded /
collapsed-then-expanded, select bubbles and overflow, see that
Overflow height matches normal bubble activity
Expanded view at correct location and size
Pointer still points to correct bubble
Bubble spacing is wider as intended
Change-Id: I32bf1cdeaa4bade4d806e04b423f56991b41c3be
This commit is contained in:
@@ -661,7 +661,7 @@ public class BubbleExpandedView extends LinearLayout {
|
||||
desiredHeight = Math.max(mBubble.getDesiredHeight(mContext), mMinHeight);
|
||||
}
|
||||
float height = Math.min(desiredHeight, getMaxExpandedHeight());
|
||||
height = Math.max(height, mIsOverflow? mOverflowHeight : mMinHeight);
|
||||
height = Math.max(height, mMinHeight);
|
||||
ViewGroup.LayoutParams lp = mActivityView.getLayoutParams();
|
||||
mNeedsNewHeight = lp.height != height;
|
||||
if (!mKeyboardVisible) {
|
||||
|
||||
@@ -868,14 +868,7 @@ public class BubbleStackView extends FrameLayout
|
||||
(v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> {
|
||||
mExpandedAnimationController.updateResources(mOrientation, mDisplaySize);
|
||||
mStackAnimationController.updateResources(mOrientation);
|
||||
|
||||
// Reposition & adjust the height for new orientation
|
||||
if (mIsExpanded) {
|
||||
mExpandedViewContainer.setTranslationY(getExpandedViewY());
|
||||
if (mExpandedBubble != null && mExpandedBubble.getExpandedView() != null) {
|
||||
mExpandedBubble.getExpandedView().updateView(getLocationOnScreen());
|
||||
}
|
||||
}
|
||||
mBubbleOverflow.updateDimensions();
|
||||
|
||||
// Need to update the padding around the view
|
||||
WindowInsets insets = getRootWindowInsets();
|
||||
@@ -899,9 +892,15 @@ public class BubbleStackView extends FrameLayout
|
||||
|
||||
if (mIsExpanded) {
|
||||
// Re-draw bubble row and pointer for new orientation.
|
||||
beforeExpandedViewAnimation();
|
||||
updateOverflowVisibility();
|
||||
updatePointerPosition();
|
||||
mExpandedAnimationController.expandFromStack(() -> {
|
||||
updatePointerPosition();
|
||||
afterExpandedViewAnimation();
|
||||
} /* after */);
|
||||
mExpandedViewContainer.setTranslationX(0);
|
||||
mExpandedViewContainer.setTranslationY(getExpandedViewY());
|
||||
mExpandedViewContainer.setAlpha(1f);
|
||||
}
|
||||
if (mVerticalPosPercentBeforeRotation >= 0) {
|
||||
mStackAnimationController.moveStackToSimilarPositionAfterRotation(
|
||||
|
||||
@@ -203,12 +203,22 @@ public class ExpandedAnimationController
|
||||
public void updateResources(int orientation, Point displaySize) {
|
||||
mScreenOrientation = orientation;
|
||||
mDisplaySize = displaySize;
|
||||
if (mLayout != null) {
|
||||
Resources res = mLayout.getContext().getResources();
|
||||
mBubblePaddingTop = res.getDimensionPixelSize(R.dimen.bubble_padding_top);
|
||||
mStatusBarHeight = res.getDimensionPixelSize(
|
||||
com.android.internal.R.dimen.status_bar_height);
|
||||
if (mLayout == null) {
|
||||
return;
|
||||
}
|
||||
Resources res = mLayout.getContext().getResources();
|
||||
mBubblePaddingTop = res.getDimensionPixelSize(R.dimen.bubble_padding_top);
|
||||
mStatusBarHeight = res.getDimensionPixelSize(
|
||||
com.android.internal.R.dimen.status_bar_height);
|
||||
mStackOffsetPx = res.getDimensionPixelSize(R.dimen.bubble_stack_offset);
|
||||
mBubblePaddingTop = res.getDimensionPixelSize(R.dimen.bubble_padding_top);
|
||||
mBubbleSizePx = res.getDimensionPixelSize(R.dimen.individual_bubble_size);
|
||||
mBubblesMaxRendered = res.getInteger(R.integer.bubbles_max_rendered);
|
||||
|
||||
// Includes overflow button.
|
||||
float totalGapWidth = getWidthForDisplayingBubbles() - (mExpandedViewPadding * 2)
|
||||
- (mBubblesMaxRendered + 1) * mBubbleSizePx;
|
||||
mSpaceBetweenBubbles = totalGapWidth / mBubblesMaxRendered;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -464,18 +474,7 @@ public class ExpandedAnimationController
|
||||
|
||||
@Override
|
||||
void onActiveControllerForLayout(PhysicsAnimationLayout layout) {
|
||||
final Resources res = layout.getResources();
|
||||
mStackOffsetPx = res.getDimensionPixelSize(R.dimen.bubble_stack_offset);
|
||||
mBubblePaddingTop = res.getDimensionPixelSize(R.dimen.bubble_padding_top);
|
||||
mBubbleSizePx = res.getDimensionPixelSize(R.dimen.individual_bubble_size);
|
||||
mStatusBarHeight =
|
||||
res.getDimensionPixelSize(com.android.internal.R.dimen.status_bar_height);
|
||||
mBubblesMaxRendered = res.getInteger(R.integer.bubbles_max_rendered);
|
||||
|
||||
// Includes overflow button.
|
||||
float totalGapWidth = getWidthForDisplayingBubbles() - (mExpandedViewPadding * 2)
|
||||
- (mBubblesMaxRendered + 1) * mBubbleSizePx;
|
||||
mSpaceBetweenBubbles = totalGapWidth / mBubblesMaxRendered;
|
||||
updateResources(mScreenOrientation, mDisplaySize);
|
||||
|
||||
// Ensure that all child views are at 1x scale, and visible, in case they were animating
|
||||
// in.
|
||||
|
||||
Reference in New Issue
Block a user