Merge "Sensitive Notification Reveal Animation Preparations" into tm-qpr-dev

This commit is contained in:
Johannes Gallmann
2023-03-08 14:48:10 +00:00
committed by Android (Google) Code Review
3 changed files with 17 additions and 6 deletions

View File

@@ -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 =

View File

@@ -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);
}
}

View File

@@ -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);
}