diff options
3 files changed, 17 insertions, 6 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/flags/Flags.kt b/packages/SystemUI/src/com/android/systemui/flags/Flags.kt index 6d0d893a60f2..0afdf66b954b 100644 --- a/packages/SystemUI/src/com/android/systemui/flags/Flags.kt +++ b/packages/SystemUI/src/com/android/systemui/flags/Flags.kt @@ -117,6 +117,9 @@ object Flags { val ANIMATED_NOTIFICATION_SHADE_INSETS = unreleasedFlag(270682168, "animated_notification_shade_insets", teamfood = true) + // TODO(b/268005230): Tracking Bug + @JvmField val SENSITIVE_REVEAL_ANIM = unreleasedFlag(268005230, "sensitive_reveal_anim") + // 200 - keyguard/lockscreen // ** Flag retired ** // public static final BooleanFlag KEYGUARD_LAYOUT = diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java index bbabde3f444e..55cb5d378a1a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java @@ -2805,9 +2805,10 @@ public class ExpandableNotificationRow extends ActivatableNotificationView int intrinsicBefore = getIntrinsicHeight(); mSensitive = sensitive; mSensitiveHiddenInGeneral = hideSensitive; - if (intrinsicBefore != getIntrinsicHeight()) { - // The animation has a few flaws and is highly visible, so jump cut instead. - notifyHeightChanged(false /* needsAnimation */); + int intrinsicAfter = getIntrinsicHeight(); + if (intrinsicBefore != intrinsicAfter) { + boolean needsAnimation = mFeatureFlags.isEnabled(Flags.SENSITIVE_REVEAL_ANIM); + notifyHeightChanged(needsAnimation); } } @@ -2864,13 +2865,19 @@ public class ExpandableNotificationRow extends ActivatableNotificationView View[] publicViews = new View[]{mPublicLayout}; View[] hiddenChildren = showingPublic ? privateViews : publicViews; View[] shownChildren = showingPublic ? publicViews : privateViews; + // disappear/appear overlap: 10 percent of duration + long overlap = duration / 10; + // disappear duration: 1/3 of duration + half of overlap + long disappearDuration = duration / 3 + overlap / 2; + // appear duration: 2/3 of duration + half of overlap + long appearDuration = (duration - disappearDuration) + overlap / 2; for (final View hiddenView : hiddenChildren) { hiddenView.setVisibility(View.VISIBLE); hiddenView.animate().cancel(); hiddenView.animate() .alpha(0f) .setStartDelay(delay) - .setDuration(duration) + .setDuration(disappearDuration) .withEndAction(() -> { hiddenView.setVisibility(View.INVISIBLE); resetAllContentAlphas(); @@ -2882,8 +2889,8 @@ public class ExpandableNotificationRow extends ActivatableNotificationView showView.animate().cancel(); showView.animate() .alpha(1f) - .setStartDelay(delay) - .setDuration(duration); + .setStartDelay(delay + duration - appearDuration) + .setDuration(appearDuration); } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowTest.java index 9e23d548e5b5..2a005f2d6120 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowTest.java @@ -103,6 +103,7 @@ public class ExpandableNotificationRowTest extends SysuiTestCase { FakeFeatureFlags fakeFeatureFlags = new FakeFeatureFlags(); fakeFeatureFlags.set(Flags.NOTIFICATION_ANIMATE_BIG_PICTURE, true); + fakeFeatureFlags.set(Flags.SENSITIVE_REVEAL_ANIM, false); mNotificationTestHelper.setFeatureFlags(fakeFeatureFlags); } |