summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java12
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java22
2 files changed, 29 insertions, 5 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
index 999e636b4bae..a85000730106 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
@@ -2325,6 +2325,18 @@ public class NotificationPanelViewController extends PanelViewController {
}
@Override
+ protected boolean shouldExpandToTopOfClearAll(float targetHeight) {
+ boolean perform = super.shouldExpandToTopOfClearAll(targetHeight);
+ if (!perform) {
+ return false;
+ }
+ // Let's make sure we're not appearing but the animation will end below the appear.
+ // Otherwise quick settings would jump at the end of the animation.
+ float fraction = mNotificationStackScroller.calculateAppearFraction(targetHeight);
+ return fraction >= 1.0f;
+ }
+
+ @Override
protected boolean shouldUseDismissingAnimation() {
return mBarState != StatusBarState.SHADE && (mKeyguardStateController.canDismissLockScreen()
|| !isTracking());
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java
index 81dc9e1cf0e2..57d36fcafa15 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java
@@ -532,11 +532,8 @@ public abstract class PanelViewController {
// Hack to make the expand transition look nice when clear all button is visible - we make
// the animation only to the last notification, and then jump to the maximum panel height so
// clear all just fades in and the decelerating motion is towards the last notification.
- final boolean
- clearAllExpandHack =
- expand && fullyExpandedClearAllVisible()
- && mExpandedHeight < getMaxPanelHeight() - getClearAllHeight()
- && !isClearAllVisible();
+ final boolean clearAllExpandHack = expand &&
+ shouldExpandToTopOfClearAll(getMaxPanelHeight() - getClearAllHeight());
if (clearAllExpandHack) {
target = getMaxPanelHeight() - getClearAllHeight();
}
@@ -601,6 +598,21 @@ public abstract class PanelViewController {
animator.start();
}
+ /**
+ * When expanding, should we expand to the top of clear all and expand immediately?
+ * This will make sure that the animation will stop smoothly at the end of the last notification
+ * before the clear all affordance.
+ *
+ * @param targetHeight the height that we would animate to, right above clear all
+ *
+ * @return true if we can expand to the top of clear all
+ */
+ protected boolean shouldExpandToTopOfClearAll(float targetHeight) {
+ return fullyExpandedClearAllVisible()
+ && mExpandedHeight < targetHeight
+ && !isClearAllVisible();
+ }
+
protected abstract boolean shouldUseDismissingAnimation();
public String getName() {