summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java39
1 files changed, 36 insertions, 3 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 f97a0675b3a7..567318ca0cea 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
@@ -181,6 +181,11 @@ public class NotificationPanelViewController extends PanelViewController {
private static final boolean DEBUG = false;
/**
+ * The parallax amount of the quick settings translation when dragging down the panel
+ */
+ private static final float QS_PARALLAX_AMOUNT = 0.175f;
+
+ /**
* Fling expanding QS.
*/
private static final int FLING_EXPAND = 0;
@@ -544,6 +549,11 @@ public class NotificationPanelViewController extends PanelViewController {
private int mDistanceForQSFullShadeTransition;
/**
+ * The translation amount for QS for the full shade transition
+ */
+ private float mQsTranslationForFullShadeTransition;
+
+ /**
* The maximum overshoot allowed for the top padding for the full shade transition
*/
private int mMaxOverscrollAmountForPulse;
@@ -589,6 +599,11 @@ public class NotificationPanelViewController extends PanelViewController {
* The animator for the qs clipping bounds.
*/
private ValueAnimator mQsClippingAnimation = null;
+
+ /**
+ * Is the current animator resetting the qs translation.
+ */
+ private boolean mIsQsTranslationResetAnimator;
private final Rect mKeyguardStatusAreaClipBounds = new Rect();
private final Region mQsInterceptRegion = new Region();
@@ -2325,6 +2340,7 @@ public class NotificationPanelViewController extends PanelViewController {
@Override
public void onAnimationEnd(Animator animation) {
mQsClippingAnimation = null;
+ mIsQsTranslationResetAnimator = false;
}
});
mQsClippingAnimation.start();
@@ -2348,7 +2364,18 @@ public class NotificationPanelViewController extends PanelViewController {
statusBarClipTop = top - mKeyguardStatusBar.getTop();
}
if (mQs != null) {
- mQs.setFancyClipping(top, bottom, radius, qsVisible
+ float qsTranslation = 0;
+ if (mTransitioningToFullShadeProgress > 0.0f || (mQsClippingAnimation != null
+ && mIsQsTranslationResetAnimator)) {
+ qsTranslation = (top - mQs.getHeader().getHeight()) * QS_PARALLAX_AMOUNT;
+ }
+ mQsTranslationForFullShadeTransition = qsTranslation;
+ updateQsFrameTranslation();
+ float currentTranslation = mQsFrame.getTranslationY();
+ mQs.setFancyClipping((
+ int) (top - currentTranslation),
+ (int) (bottom - currentTranslation),
+ radius, qsVisible
&& !mShouldUseSplitNotificationShade);
}
mKeyguardStatusViewController.setClipBounds(
@@ -2485,6 +2512,7 @@ public class NotificationPanelViewController extends PanelViewController {
if (animate && !mShouldUseSplitNotificationShade) {
animateNextNotificationBounds(StackStateAnimator.ANIMATION_DURATION_GO_TO_FULL_SHADE,
delay);
+ mIsQsTranslationResetAnimator = mQsTranslationForFullShadeTransition > 0.0f;
}
float endPosition = 0;
@@ -2884,7 +2912,7 @@ public class NotificationPanelViewController extends PanelViewController {
float startHeight = -mQsExpansionHeight;
if (!mShouldUseSplitNotificationShade && mBarState == StatusBarState.SHADE) {
// Small parallax as we pull down and clip QS
- startHeight = -mQsExpansionHeight * 0.2f;
+ startHeight = -mQsExpansionHeight * QS_PARALLAX_AMOUNT;
}
if (mKeyguardBypassController.getBypassEnabled() && isOnKeyguard()) {
if (mNotificationStackScrollLayoutController.isPulseExpanding()) {
@@ -3066,10 +3094,15 @@ public class NotificationPanelViewController extends PanelViewController {
super.setOverExpansion(overExpansion);
// Translating the quick settings by half the overexpansion to center it in the background
// frame
- mQsFrame.setTranslationY(overExpansion / 2f);
+ updateQsFrameTranslation();
mNotificationStackScrollLayoutController.setOverExpansion(overExpansion);
}
+ private void updateQsFrameTranslation() {
+ float translation = mOverExpansion / 2.0f + mQsTranslationForFullShadeTransition;
+ mQsFrame.setTranslationY(translation);
+ }
+
@Override
protected void onTrackingStarted() {
mFalsingCollector.onTrackingStarted(!mKeyguardStateController.canDismissLockScreen());