diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 62427e1d8e523..a9b154c869e83 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -4752,6 +4752,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 ae61f24a7a54a..09f6110b517ff 100644 --- a/services/core/java/com/android/server/wm/Transition.java +++ b/services/core/java/com/android/server/wm/Transition.java @@ -199,6 +199,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; @@ -871,7 +874,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); } }