Merge "Re-show faded PiP when fixed rotation is finished" into udc-dev

This commit is contained in:
Riddle Hsu
2023-04-17 04:19:44 +00:00
committed by Android (Google) Code Review
3 changed files with 28 additions and 1 deletions

View File

@@ -1007,6 +1007,7 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
return;
}
if (Transitions.ENABLE_SHELL_TRANSITIONS) {
mPipTransitionController.onFixedRotationFinished();
clearWaitForFixedRotation();
return;
}

View File

@@ -409,9 +409,31 @@ public class PipTransition extends PipTransitionController {
@Override
public void onFixedRotationStarted() {
fadeEnteredPipIfNeed(false /* show */);
}
@Override
public void onFixedRotationFinished() {
fadeEnteredPipIfNeed(true /* show */);
}
private void fadeEnteredPipIfNeed(boolean show) {
// The transition with this fixed rotation may be handled by other handler before reaching
// PipTransition, so we cannot do this in #startAnimation.
if (mPipTransitionState.getTransitionState() == ENTERED_PIP && !mHasFadeOut) {
if (!mPipTransitionState.hasEnteredPip()) {
return;
}
if (show && mHasFadeOut) {
// If there is a pending transition, then let startAnimation handle it. And if it is
// handled, mHasFadeOut will be set to false and this runnable will be no-op. Otherwise
// make sure the PiP will reshow, e.g. swipe-up with fixed rotation (fade-out) but
// return to the current app (only finish the recent transition).
mTransitions.runOnIdle(() -> {
if (mHasFadeOut && mPipTransitionState.hasEnteredPip()) {
fadeExistingPip(true /* show */);
}
});
} else if (!show && !mHasFadeOut) {
// Fade out the existing PiP to avoid jump cut during seamless rotation.
fadeExistingPip(false /* show */);
}

View File

@@ -123,6 +123,10 @@ public abstract class PipTransitionController implements Transitions.TransitionH
public void onFixedRotationStarted() {
}
/** Called when the fixed rotation finished. */
public void onFixedRotationFinished() {
}
public PipTransitionController(
@NonNull ShellInit shellInit,
@NonNull ShellTaskOrganizer shellTaskOrganizer,