Merge "Reset HUN roundness after cancellation of disappearing animation" into udc-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
ff27ed4869
@@ -426,16 +426,21 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
|
||||
updateAppearAnimationAlpha();
|
||||
updateAppearRect();
|
||||
mAppearAnimator.addListener(new AnimatorListenerAdapter() {
|
||||
private boolean mWasCancelled;
|
||||
private boolean mRunWithoutInterruptions;
|
||||
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
if (onFinishedRunnable != null) {
|
||||
onFinishedRunnable.run();
|
||||
}
|
||||
if (!mWasCancelled) {
|
||||
if (mRunWithoutInterruptions) {
|
||||
enableAppearDrawing(false);
|
||||
onAppearAnimationFinished(isAppearing);
|
||||
}
|
||||
|
||||
// We need to reset the View state, even if the animation was cancelled
|
||||
onAppearAnimationFinished(isAppearing);
|
||||
|
||||
if (mRunWithoutInterruptions) {
|
||||
InteractionJankMonitor.getInstance().end(getCujType(isAppearing));
|
||||
} else {
|
||||
InteractionJankMonitor.getInstance().cancel(getCujType(isAppearing));
|
||||
@@ -444,7 +449,7 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
|
||||
|
||||
@Override
|
||||
public void onAnimationStart(Animator animation) {
|
||||
mWasCancelled = false;
|
||||
mRunWithoutInterruptions = true;
|
||||
Configuration.Builder builder = Configuration.Builder
|
||||
.withView(getCujType(isAppearing), ActivatableNotificationView.this);
|
||||
InteractionJankMonitor.getInstance().begin(builder);
|
||||
@@ -452,7 +457,7 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
|
||||
|
||||
@Override
|
||||
public void onAnimationCancel(Animator animation) {
|
||||
mWasCancelled = true;
|
||||
mRunWithoutInterruptions = false;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -789,6 +789,50 @@ public class ExpandableNotificationRowTest extends SysuiTestCase {
|
||||
assertThat(row.isExpanded()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onDisappearAnimationFinished_shouldSetFalse_headsUpAnimatingAway()
|
||||
throws Exception {
|
||||
final ExpandableNotificationRow row = mNotificationTestHelper.createRow();
|
||||
|
||||
// Initial state: suppose heads up animation in progress
|
||||
row.setHeadsUpAnimatingAway(true);
|
||||
assertThat(row.isHeadsUpAnimatingAway()).isTrue();
|
||||
|
||||
// on disappear animation ends
|
||||
row.onAppearAnimationFinished(/* wasAppearing = */ false);
|
||||
assertThat(row.isHeadsUpAnimatingAway()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onHUNAppear_cancelAppearDrawing_shouldResetAnimationState() throws Exception {
|
||||
final ExpandableNotificationRow row = mNotificationTestHelper.createRow();
|
||||
|
||||
row.performAddAnimation(/* delay */ 0, /* duration */ 1000, /* isHeadsUpAppear */ true);
|
||||
|
||||
waitForIdleSync();
|
||||
assertThat(row.isDrawingAppearAnimation()).isTrue();
|
||||
|
||||
row.cancelAppearDrawing();
|
||||
|
||||
waitForIdleSync();
|
||||
assertThat(row.isDrawingAppearAnimation()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onHUNDisappear_cancelAppearDrawing_shouldResetAnimationState() throws Exception {
|
||||
final ExpandableNotificationRow row = mNotificationTestHelper.createRow();
|
||||
|
||||
row.performAddAnimation(/* delay */ 0, /* duration */ 1000, /* isHeadsUpAppear */ false);
|
||||
|
||||
waitForIdleSync();
|
||||
assertThat(row.isDrawingAppearAnimation()).isTrue();
|
||||
|
||||
row.cancelAppearDrawing();
|
||||
|
||||
waitForIdleSync();
|
||||
assertThat(row.isDrawingAppearAnimation()).isFalse();
|
||||
}
|
||||
|
||||
private void setDrawableIconsInImageView(CachingIconView icon, Drawable iconDrawable,
|
||||
Drawable rightIconDrawable) {
|
||||
ImageView iconView = mock(ImageView.class);
|
||||
|
||||
Reference in New Issue
Block a user