Keep gutter aligned when removing notification footer

Bug: 63262764
Change-Id: I94e7978dafc04fc2673a9bb8c6d24ff20641416f
This commit is contained in:
Tony 2017-07-03 13:35:18 -07:00
parent 2ed276eb13
commit 67a25b3c4d
2 changed files with 22 additions and 3 deletions

View File

@ -206,7 +206,10 @@ public class NotificationFooterLayout extends FrameLayout {
@Override
public void onAnimationEnd(Animator animation) {
((ViewGroup) getParent()).findViewById(R.id.divider).setVisibility(GONE);
((ViewGroup) getParent()).removeView(NotificationFooterLayout.this);
// Keep view around because gutter is aligned to it, but remove height to
// both hide the view and keep calculations correct for last dismissal.
getLayoutParams().height = 0;
requestLayout();
}
});
collapseFooter.start();

View File

@ -17,6 +17,8 @@
package com.android.launcher3.notification;
import android.animation.Animator;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.app.Notification;
import android.content.Context;
import android.graphics.Rect;
@ -28,7 +30,9 @@ import android.widget.FrameLayout;
import android.widget.TextView;
import com.android.launcher3.ItemInfo;
import com.android.launcher3.LauncherAnimUtils;
import com.android.launcher3.R;
import com.android.launcher3.anim.PropertyResetListener;
import com.android.launcher3.anim.RoundedRectRevealOutlineProvider;
import com.android.launcher3.graphics.IconPalette;
import com.android.launcher3.logging.UserEventDispatcher.LogContainerProvider;
@ -89,6 +93,8 @@ public class NotificationItemView extends PopupItemView implements LogContainerP
}
public Animator animateHeightRemoval(int heightToRemove, boolean shouldRemoveFromTop) {
AnimatorSet anim = LauncherAnimUtils.createAnimatorSet();
Rect startRect = new Rect(mPillRect);
Rect endRect = new Rect(mPillRect);
if (shouldRemoveFromTop) {
@ -96,8 +102,18 @@ public class NotificationItemView extends PopupItemView implements LogContainerP
} else {
endRect.bottom -= heightToRemove;
}
return new RoundedRectRevealOutlineProvider(getBackgroundRadius(), getBackgroundRadius(),
startRect, endRect, mRoundedCorners).createRevealAnimator(this, false);
anim.play(new RoundedRectRevealOutlineProvider(getBackgroundRadius(), getBackgroundRadius(),
startRect, endRect, mRoundedCorners).createRevealAnimator(this, false));
View bottomGutter = findViewById(R.id.gutter_bottom);
if (bottomGutter != null && bottomGutter.getVisibility() == VISIBLE) {
Animator translateGutter = ObjectAnimator.ofFloat(bottomGutter, TRANSLATION_Y,
-heightToRemove);
translateGutter.addListener(new PropertyResetListener<>(TRANSLATION_Y, 0f));
anim.play(translateGutter);
}
return anim;
}
public void updateHeader(int notificationCount, @Nullable IconPalette palette) {