Set correct bounds when offset and expanded
This bug occured when offset during pip window expanding animation. curBounds value is still not expand bounds values, fix it by reset curBounds if it should be expanded status. Fix: 154647477 Test: Move pip widnow near and above IME then touch it. Change-Id: I3d0215b96643c7d33d8d922d41ac12cd6291270e
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user