diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index b3b392c149a15..c0646ed7b6e95 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -4727,6 +4727,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A if (mPendingRemoteAnimation != null) { mDisplayContent.mAppTransition.overridePendingAppTransitionRemote( mPendingRemoteAnimation); + mTransitionController.setStatusBarTransitionDelay( + mPendingRemoteAnimation.getStatusBarTransitionDelay()); } else { if (mPendingOptions == null || mPendingOptions.getAnimationType() == ANIM_SCENE_TRANSITION) { diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java index 3c0cac0079e84..c58d81e0f5ba4 100644 --- a/services/core/java/com/android/server/wm/Transition.java +++ b/services/core/java/com/android/server/wm/Transition.java @@ -202,6 +202,9 @@ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListe private boolean mNavBarAttachedToApp = false; private int mRecentsDisplayId = INVALID_DISPLAY; + /** The delay for light bar appearance animation. */ + long mStatusBarTransitionDelay; + /** @see #setCanPipOnFinish */ private boolean mCanPipOnFinish = true; @@ -870,7 +873,7 @@ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListe } buildFinishTransaction(mFinishTransaction, info.getRootLeash()); if (mController.getTransitionPlayer() != null) { - mController.dispatchLegacyAppTransitionStarting(info); + mController.dispatchLegacyAppTransitionStarting(info, mStatusBarTransitionDelay); try { ProtoLog.v(ProtoLogGroup.WM_DEBUG_WINDOW_TRANSITIONS, "Calling onTransitionReady: %s", info); diff --git a/services/core/java/com/android/server/wm/TransitionController.java b/services/core/java/com/android/server/wm/TransitionController.java index 6d31e937984ef..dbc2c5fb0ce30 100644 --- a/services/core/java/com/android/server/wm/TransitionController.java +++ b/services/core/java/com/android/server/wm/TransitionController.java @@ -462,6 +462,12 @@ class TransitionController { }, true /* traverseTopToBottom */); } + /** @see Transition#mStatusBarTransitionDelay */ + void setStatusBarTransitionDelay(long delay) { + if (mCollectingTransition == null) return; + mCollectingTransition.mStatusBarTransitionDelay = delay; + } + /** @see Transition#setOverrideAnimation */ void setOverrideAnimation(TransitionInfo.AnimationOptions options, @Nullable IRemoteCallback startCallback, @Nullable IRemoteCallback finishCallback) { @@ -600,13 +606,14 @@ class TransitionController { } } - void dispatchLegacyAppTransitionStarting(TransitionInfo info) { + void dispatchLegacyAppTransitionStarting(TransitionInfo info, long statusBarTransitionDelay) { final boolean keyguardGoingAway = info.isKeyguardGoingAway(); for (int i = 0; i < mLegacyListeners.size(); ++i) { // TODO(shell-transitions): handle (un)occlude transition. mLegacyListeners.get(i).onAppTransitionStartingLocked(keyguardGoingAway, false /* keyguardOcclude */, 0 /* durationHint */, - SystemClock.uptimeMillis(), AnimationAdapter.STATUS_BAR_TRANSITION_DURATION); + SystemClock.uptimeMillis() + statusBarTransitionDelay, + AnimationAdapter.STATUS_BAR_TRANSITION_DURATION); } }