Merge "Save reentry fraction when animation is ignored" into rvc-dev

This commit is contained in:
Hongwei Wang
2020-05-29 04:09:56 +00:00
committed by Android (Google) Code Review

View File

@@ -110,13 +110,7 @@ public class PipTaskOrganizer extends TaskOrganizer implements
new PipAnimationController.PipAnimationCallback() {
@Override
public void onPipAnimationStart(PipAnimationController.PipTransitionAnimator animator) {
mMainHandler.post(() -> {
for (int i = mPipTransitionCallbacks.size() - 1; i >= 0; i--) {
final PipTransitionCallback callback = mPipTransitionCallbacks.get(i);
callback.onPipTransitionStarted(mTaskInfo.baseActivity,
animator.getTransitionDirection());
}
});
sendOnPipTransitionStarted(animator.getTransitionDirection());
}
@Override
@@ -124,24 +118,12 @@ public class PipTaskOrganizer extends TaskOrganizer implements
PipAnimationController.PipTransitionAnimator animator) {
finishResize(tx, animator.getDestinationBounds(), animator.getTransitionDirection(),
animator.getAnimationType());
mMainHandler.post(() -> {
for (int i = mPipTransitionCallbacks.size() - 1; i >= 0; i--) {
final PipTransitionCallback callback = mPipTransitionCallbacks.get(i);
callback.onPipTransitionFinished(mTaskInfo.baseActivity,
animator.getTransitionDirection());
}
});
sendOnPipTransitionFinished(animator.getTransitionDirection());
}
@Override
public void onPipAnimationCancel(PipAnimationController.PipTransitionAnimator animator) {
mMainHandler.post(() -> {
for (int i = mPipTransitionCallbacks.size() - 1; i >= 0; i--) {
final PipTransitionCallback callback = mPipTransitionCallbacks.get(i);
callback.onPipTransitionCanceled(mTaskInfo.baseActivity,
animator.getTransitionDirection());
}
});
sendOnPipTransitionCancelled(animator.getTransitionDirection());
}
};
@@ -281,18 +263,22 @@ public class PipTaskOrganizer extends TaskOrganizer implements
final boolean orientationDiffers = initialConfig.windowConfiguration.getRotation()
!= mPipBoundsHandler.getDisplayRotation();
final WindowContainerTransaction wct = new WindowContainerTransaction();
final Rect destinationBounds = initialConfig.windowConfiguration.getBounds();
final int direction = syncWithSplitScreenBounds(destinationBounds)
? TRANSITION_DIRECTION_TO_SPLIT_SCREEN
: TRANSITION_DIRECTION_TO_FULLSCREEN;
if (orientationDiffers) {
// Send started callback though animation is ignored.
sendOnPipTransitionStarted(direction);
// Don't bother doing an animation if the display rotation differs or if it's in
// a non-supported windowing mode
wct.setWindowingMode(mToken, WINDOWING_MODE_UNDEFINED);
wct.setActivityWindowingMode(mToken, WINDOWING_MODE_UNDEFINED);
WindowOrganizer.applyTransaction(wct);
// Send finished callback though animation is ignored.
sendOnPipTransitionFinished(direction);
mInPip = false;
} else {
final Rect destinationBounds = initialConfig.windowConfiguration.getBounds();
final int direction = syncWithSplitScreenBounds(destinationBounds)
? TRANSITION_DIRECTION_TO_SPLIT_SCREEN
: TRANSITION_DIRECTION_TO_FULLSCREEN;
final SurfaceControl.Transaction tx =
mSurfaceControlTransactionFactory.getTransaction();
mSurfaceTransactionHelper.scale(tx, mLeash, destinationBounds,
@@ -402,6 +388,36 @@ public class PipTaskOrganizer extends TaskOrganizer implements
});
}
private void sendOnPipTransitionStarted(
@PipAnimationController.TransitionDirection int direction) {
mMainHandler.post(() -> {
for (int i = mPipTransitionCallbacks.size() - 1; i >= 0; i--) {
final PipTransitionCallback callback = mPipTransitionCallbacks.get(i);
callback.onPipTransitionStarted(mTaskInfo.baseActivity, direction);
}
});
}
private void sendOnPipTransitionFinished(
@PipAnimationController.TransitionDirection int direction) {
mMainHandler.post(() -> {
for (int i = mPipTransitionCallbacks.size() - 1; i >= 0; i--) {
final PipTransitionCallback callback = mPipTransitionCallbacks.get(i);
callback.onPipTransitionFinished(mTaskInfo.baseActivity, direction);
}
});
}
private void sendOnPipTransitionCancelled(
@PipAnimationController.TransitionDirection int direction) {
mMainHandler.post(() -> {
for (int i = mPipTransitionCallbacks.size() - 1; i >= 0; i--) {
final PipTransitionCallback callback = mPipTransitionCallbacks.get(i);
callback.onPipTransitionCanceled(mTaskInfo.baseActivity, direction);
}
});
}
/**
* Note that dismissing PiP is now originated from SystemUI, see {@link #exitPip(int)}.
* Meanwhile this callback is invoked whenever the task is removed. For instance: