From ff10d2bf526117fe1c83c76e1bc9e876d128666f Mon Sep 17 00:00:00 2001 From: Johannes Gallmann Date: Wed, 7 Feb 2024 16:12:18 +0100 Subject: Fix small alpha flicker for cross activity back Bug: 321964396 Flag: ACONFIG com.android.window.flags.predictive_back_system_anims TEAMFOOD Test: Manual, i.e. veryfing that flicker does not occur anymore during cross activity back animation Change-Id: Ifcd8ee11c661c1f7ff0ab1730569b34c78adece0 --- .../wm/shell/back/CrossActivityBackAnimation.java | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossActivityBackAnimation.java b/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossActivityBackAnimation.java index 160f922dd928..55982dca79b3 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossActivityBackAnimation.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossActivityBackAnimation.java @@ -310,12 +310,16 @@ public class CrossActivityBackAnimation extends ShellBackAnimation { float top = mapRange(progress, mEnteringStartRect.top, mStartTaskRect.top); float width = mapRange(progress, mEnteringStartRect.width(), mStartTaskRect.width()); float height = mapRange(progress, mEnteringStartRect.height(), mStartTaskRect.height()); - float alpha = mapRange(progress, mEnteringProgress, 1.0f); - + float alpha = mapRange(progress, getPreCommitEnteringAlpha(), 1.0f); mEnteringRect.set(left, top, left + width, top + height); applyTransform(mEnteringTarget.leash, mEnteringRect, alpha); } + private float getPreCommitEnteringAlpha() { + return Math.max(smoothstep(ENTER_ALPHA_THRESHOLD, 0.7f, mEnteringProgress), + MIN_WINDOW_ALPHA); + } + private float getEnteringProgress() { return mEnteringProgress * SCALE_FACTOR; } @@ -325,9 +329,7 @@ public class CrossActivityBackAnimation extends ShellBackAnimation { if (mEnteringTarget != null && mEnteringTarget.leash != null) { transformWithProgress( mEnteringProgress, - Math.max( - smoothstep(ENTER_ALPHA_THRESHOLD, 0.7f, mEnteringProgress), - MIN_WINDOW_ALPHA), /* alpha */ + getPreCommitEnteringAlpha(), mEnteringTarget.leash, mEnteringRect, -mWindowXShift, @@ -336,6 +338,11 @@ public class CrossActivityBackAnimation extends ShellBackAnimation { } } + private float getPreCommitLeavingAlpha() { + return Math.max(1 - smoothstep(0, ENTER_ALPHA_THRESHOLD, mLeavingProgress), + MIN_WINDOW_ALPHA); + } + private float getLeavingProgress() { return mLeavingProgress * SCALE_FACTOR; } @@ -345,9 +352,7 @@ public class CrossActivityBackAnimation extends ShellBackAnimation { if (mClosingTarget != null && mClosingTarget.leash != null) { transformWithProgress( mLeavingProgress, - Math.max( - 1 - smoothstep(0, ENTER_ALPHA_THRESHOLD, mLeavingProgress), - MIN_WINDOW_ALPHA), + getPreCommitLeavingAlpha(), mClosingTarget.leash, mClosingRect, 0, -- cgit v1.2.3-59-g8ed1b