Merge "Set correct bounds when offset and expanded" into rvc-dev

This commit is contained in:
Tony Huang
2020-05-19 09:15:28 +00:00
committed by Android (Google) Code Review
2 changed files with 25 additions and 4 deletions

View File

@@ -170,9 +170,9 @@ public class PipAnimationController {
private final @AnimationType int mAnimationType;
private final Rect mDestinationBounds = new Rect();
private T mStartValue;
protected T mCurrentValue;
protected T mStartValue;
private T mEndValue;
private T mCurrentValue;
private PipAnimationCallback mPipAnimationCallback;
private PipSurfaceTransactionHelper.SurfaceControlTransactionFactory
mSurfaceControlTransactionFactory;
@@ -288,7 +288,6 @@ public class PipAnimationController {
*/
void updateEndValue(T endValue) {
mEndValue = endValue;
mStartValue = mCurrentValue;
}
SurfaceControl.Transaction newSurfaceControlTransaction() {
@@ -337,6 +336,12 @@ public class PipAnimationController {
tx.show(leash);
tx.apply();
}
@Override
void updateEndValue(Float endValue) {
super.updateEndValue(endValue);
mStartValue = mCurrentValue;
}
};
}
@@ -392,6 +397,14 @@ public class PipAnimationController {
getSurfaceTransactionHelper().resetScale(tx, leash, getDestinationBounds())
.crop(tx, leash, getDestinationBounds());
}
@Override
void updateEndValue(Rect endValue) {
super.updateEndValue(endValue);
if (mStartValue != null && mCurrentValue != null) {
mStartValue.set(mCurrentValue);
}
}
};
}
}

View File

@@ -431,13 +431,21 @@ public class PipTouchHandler {
} else {
final float offsetBufferPx = BOTTOM_OFFSET_BUFFER_DP
* mContext.getResources().getDisplayMetrics().density;
final Rect toMovementBounds = mMenuState == MENU_STATE_FULL && willResizeMenu()
final boolean isExpanded = mMenuState == MENU_STATE_FULL && willResizeMenu();
final Rect toMovementBounds = isExpanded
? new Rect(expandedMovementBounds)
: new Rect(normalMovementBounds);
final int prevBottom = mMovementBounds.bottom - mMovementBoundsExtraOffsets;
final int toBottom = toMovementBounds.bottom < toMovementBounds.top
? toMovementBounds.bottom
: toMovementBounds.bottom - extraOffset;
if (isExpanded) {
curBounds.set(mExpandedBounds);
mSnapAlgorithm.applySnapFraction(curBounds, toMovementBounds,
mSavedSnapFraction);
}
if ((Math.min(prevBottom, toBottom) - offsetBufferPx) <= curBounds.top
&& curBounds.top <= (Math.max(prevBottom, toBottom) + offsetBufferPx)) {
mMotionHelper.animateToOffset(curBounds, toBottom - curBounds.top);