Loading packages/SystemUI/aconfig/systemui.aconfig +10 −0 Original line number Diff line number Diff line Loading @@ -1122,3 +1122,13 @@ flag { purpose: PURPOSE_BUGFIX } } flag { name: "translucent_occluding_activity_fix" namespace: "systemui" description: "Fixes occlusion animation for transluent activities" bug: "303010980" metadata { purpose: PURPOSE_BUGFIX } } No newline at end of file packages/SystemUI/animation/src/com/android/systemui/animation/ActivityTransitionAnimator.kt +8 −1 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.app.PendingIntent import android.app.TaskInfo import android.app.WindowConfiguration import android.content.ComponentName import android.graphics.Color import android.graphics.Matrix import android.graphics.Rect import android.graphics.RectF Loading Loading @@ -53,6 +54,7 @@ import com.android.app.animation.Interpolators import com.android.internal.annotations.VisibleForTesting import com.android.internal.policy.ScreenDecorationsUtils import com.android.systemui.Flags.activityTransitionUseLargestWindow import com.android.systemui.Flags.translucentOccludingActivityFix import com.android.systemui.shared.Flags.returnAnimationFrameworkLibrary import com.android.wm.shell.shared.IShellTransitions import com.android.wm.shell.shared.ShellTransitions Loading Loading @@ -991,7 +993,12 @@ constructor( controller.createAnimatorState() } val windowBackgroundColor = window.taskInfo?.let { callback.getBackgroundColor(it) } ?: window.backgroundColor if (translucentOccludingActivityFix() && window.isTranslucent) { Color.TRANSPARENT } else { window.taskInfo?.let { callback.getBackgroundColor(it) } ?: window.backgroundColor } // TODO(b/184121838): We should somehow get the top and bottom radius of the window // instead of recomputing isExpandingFullyAbove here. Loading packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +24 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STR import static com.android.systemui.DejankUtils.whitelistIpcs; import static com.android.systemui.Flags.notifyPowerManagerUserActivityBackground; import static com.android.systemui.Flags.refactorGetCurrentUser; import static com.android.systemui.Flags.translucentOccludingActivityFix; import static com.android.systemui.keyguard.ui.viewmodel.LockscreenToDreamingTransitionViewModel.DREAMING_ANIMATION_DURATION_MS; import android.animation.Animator; Loading Loading @@ -1036,6 +1037,17 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, (int) (fullWidth - initialWidth) /* left */, fullWidth /* right */, mWindowCornerRadius, mWindowCornerRadius); } else if (translucentOccludingActivityFix() && mOccludingRemoteAnimationTarget != null && mOccludingRemoteAnimationTarget.isTranslucent) { // Animating in a transparent window looks really weird. Just let it be // fullscreen and the app can do an internal animation if it wants to. return new TransitionAnimator.State( 0, fullHeight, 0, fullWidth, 0f, 0f); } else { final float initialHeight = fullHeight / 2f; final float initialWidth = fullWidth / 2f; Loading Loading @@ -1399,6 +1411,11 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, private final Lazy<DreamViewModel> mDreamViewModel; private final Lazy<CommunalTransitionViewModel> mCommunalTransitionViewModel; private RemoteAnimationTarget mRemoteAnimationTarget; /** * The most recent RemoteAnimationTarget provided for an occluding activity animation. */ private RemoteAnimationTarget mOccludingRemoteAnimationTarget; private boolean mShowCommunalWhenUnoccluding = false; private final Lazy<WindowManagerLockscreenVisibilityManager> mWmLockscreenVisibilityManager; Loading Loading @@ -3941,6 +3958,13 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, public void onAnimationStart(int transit, RemoteAnimationTarget[] apps, RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps, IRemoteAnimationFinishedCallback finishedCallback) throws RemoteException { // Save mRemoteAnimationTarget for reference in the animation controller. Needs to be // called prior to super.onAnimationStart() since that's the call that eventually asks // the animation controller to configure the animation state. if (apps.length > 0) { mOccludingRemoteAnimationTarget = apps[0]; } super.onAnimationStart(transit, apps, wallpapers, nonApps, finishedCallback); mInteractionJankMonitor.begin( Loading Loading
packages/SystemUI/aconfig/systemui.aconfig +10 −0 Original line number Diff line number Diff line Loading @@ -1122,3 +1122,13 @@ flag { purpose: PURPOSE_BUGFIX } } flag { name: "translucent_occluding_activity_fix" namespace: "systemui" description: "Fixes occlusion animation for transluent activities" bug: "303010980" metadata { purpose: PURPOSE_BUGFIX } } No newline at end of file
packages/SystemUI/animation/src/com/android/systemui/animation/ActivityTransitionAnimator.kt +8 −1 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.app.PendingIntent import android.app.TaskInfo import android.app.WindowConfiguration import android.content.ComponentName import android.graphics.Color import android.graphics.Matrix import android.graphics.Rect import android.graphics.RectF Loading Loading @@ -53,6 +54,7 @@ import com.android.app.animation.Interpolators import com.android.internal.annotations.VisibleForTesting import com.android.internal.policy.ScreenDecorationsUtils import com.android.systemui.Flags.activityTransitionUseLargestWindow import com.android.systemui.Flags.translucentOccludingActivityFix import com.android.systemui.shared.Flags.returnAnimationFrameworkLibrary import com.android.wm.shell.shared.IShellTransitions import com.android.wm.shell.shared.ShellTransitions Loading Loading @@ -991,7 +993,12 @@ constructor( controller.createAnimatorState() } val windowBackgroundColor = window.taskInfo?.let { callback.getBackgroundColor(it) } ?: window.backgroundColor if (translucentOccludingActivityFix() && window.isTranslucent) { Color.TRANSPARENT } else { window.taskInfo?.let { callback.getBackgroundColor(it) } ?: window.backgroundColor } // TODO(b/184121838): We should somehow get the top and bottom radius of the window // instead of recomputing isExpandingFullyAbove here. Loading
packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +24 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STR import static com.android.systemui.DejankUtils.whitelistIpcs; import static com.android.systemui.Flags.notifyPowerManagerUserActivityBackground; import static com.android.systemui.Flags.refactorGetCurrentUser; import static com.android.systemui.Flags.translucentOccludingActivityFix; import static com.android.systemui.keyguard.ui.viewmodel.LockscreenToDreamingTransitionViewModel.DREAMING_ANIMATION_DURATION_MS; import android.animation.Animator; Loading Loading @@ -1036,6 +1037,17 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, (int) (fullWidth - initialWidth) /* left */, fullWidth /* right */, mWindowCornerRadius, mWindowCornerRadius); } else if (translucentOccludingActivityFix() && mOccludingRemoteAnimationTarget != null && mOccludingRemoteAnimationTarget.isTranslucent) { // Animating in a transparent window looks really weird. Just let it be // fullscreen and the app can do an internal animation if it wants to. return new TransitionAnimator.State( 0, fullHeight, 0, fullWidth, 0f, 0f); } else { final float initialHeight = fullHeight / 2f; final float initialWidth = fullWidth / 2f; Loading Loading @@ -1399,6 +1411,11 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, private final Lazy<DreamViewModel> mDreamViewModel; private final Lazy<CommunalTransitionViewModel> mCommunalTransitionViewModel; private RemoteAnimationTarget mRemoteAnimationTarget; /** * The most recent RemoteAnimationTarget provided for an occluding activity animation. */ private RemoteAnimationTarget mOccludingRemoteAnimationTarget; private boolean mShowCommunalWhenUnoccluding = false; private final Lazy<WindowManagerLockscreenVisibilityManager> mWmLockscreenVisibilityManager; Loading Loading @@ -3941,6 +3958,13 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, public void onAnimationStart(int transit, RemoteAnimationTarget[] apps, RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps, IRemoteAnimationFinishedCallback finishedCallback) throws RemoteException { // Save mRemoteAnimationTarget for reference in the animation controller. Needs to be // called prior to super.onAnimationStart() since that's the call that eventually asks // the animation controller to configure the animation state. if (apps.length > 0) { mOccludingRemoteAnimationTarget = apps[0]; } super.onAnimationStart(transit, apps, wallpapers, nonApps, finishedCallback); mInteractionJankMonitor.begin( Loading