From 0c2fcca0a1674841ac5a51704d42f55864d26ad1 Mon Sep 17 00:00:00 2001 From: Lyn Han Date: Wed, 28 Apr 2021 07:50:01 -0500 Subject: [PATCH] Swipe a little, open shade a lot Bug: 172289889 Test: manual Change-Id: Ib3117685d24c5dff1e926ade0e1af6bc6f12708a --- .../statusbar/phone/PanelViewController.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) 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 4714c4b5d4760..d0bdf40d1f0b2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java @@ -42,6 +42,7 @@ import android.view.ViewConfiguration; import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.animation.Interpolator; +import android.view.animation.PathInterpolator; import com.android.internal.jank.InteractionJankMonitor; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; @@ -139,6 +140,7 @@ public abstract class PanelViewController { */ private boolean mInstantExpanding; private boolean mAnimateAfterExpanding; + private boolean mIsFlinging; PanelBar mBar; @@ -596,6 +598,7 @@ public abstract class PanelViewController { notifyExpandingFinished(); return; } + mIsFlinging = true; mOverExpandedBeforeFling = getOverExpansionAmount() > 0f; ValueAnimator animator = createHeightAnimator(target); mFlingTarget = target; @@ -679,6 +682,7 @@ public abstract class PanelViewController { } private void onFlingEnd(boolean cancelled) { + mIsFlinging = false; setAnimator(null); mKeyguardStateController.notifyPanelFlingEnd(); if (!cancelled) { @@ -751,6 +755,16 @@ public abstract class PanelViewController { if (isNaN(h)) { Log.wtf(TAG, "ExpandedHeight set to NaN"); } + if (mAmbientState.isExpansionChanging() + && !mIsFlinging // Fling already uses interpolated height from end of swipe + && !mAmbientState.isOnKeyguard() + && !mAmbientState.isDozing() + && !mAmbientState.isPulsing()) { + final float fraction = h / mView.getHeight(); + final float interpolatedFraction = new PathInterpolator(0.2f, 0.8f, 0.8f, 1f) + .getInterpolation(fraction); + h = interpolatedFraction * mView.getHeight(); + } maybeOverScrollForShadeFlingOpen(h); if (mExpandLatencyTracking && h != 0f) { DejankUtils.postAfterTraversal(