Start expanding QS directly when overscrolling to it.
This removes the janky transition from scrolling to flinging.
Change-Id: I691ac94ec06af7f7431ad162e07c21d2c753e99c
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
index c82bdf6..2790540 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -94,6 +94,7 @@
private int mQsMaxExpansionHeight;
private int mQsPeekHeight;
private boolean mStackScrollerOverscrolling;
+ private boolean mQsExpansionFromOverscroll;
private boolean mQsExpansionEnabled = true;
private ValueAnimator mQsExpansionAnimator;
private FlingAnimationUtils mFlingAnimationUtils;
@@ -523,19 +524,25 @@
@Override
- public void onOverscrollTopChanged(float amount) {
+ public void onOverscrollTopChanged(float amount, boolean isRubberbanded) {
cancelAnimation();
float rounded = amount >= 1f ? amount : 0f;
- mStackScrollerOverscrolling = rounded != 0f;
+ mStackScrollerOverscrolling = rounded != 0f && isRubberbanded;
+ mQsExpansionFromOverscroll = rounded != 0f;
setQsExpansion(mQsMinExpansionHeight + rounded);
updateQsState();
}
@Override
public void flingTopOverscroll(float velocity, boolean open) {
- mStackScrollerOverscrolling = false;
setQsExpansion(mQsExpansionHeight);
- flingSettings(velocity, open);
+ flingSettings(velocity, open, new Runnable() {
+ @Override
+ public void run() {
+ mStackScrollerOverscrolling = false;
+ mQsExpansionFromOverscroll = false;
+ }
+ });
}
private void onQsExpansionStarted() {
@@ -571,13 +578,12 @@
private void updateQsState() {
boolean expandVisually = mQsExpanded || mStackScrollerOverscrolling;
mHeader.setExpanded(expandVisually, mStackScrollerOverscrolling);
- mNotificationStackScroller.setEnabled(!mQsExpanded);
+ mNotificationStackScroller.setEnabled(!mQsExpanded || mQsExpansionFromOverscroll);
mQsPanel.setVisibility(expandVisually ? View.VISIBLE : View.INVISIBLE);
- mQsContainer.setVisibility(mKeyguardShowing && !expandVisually
- ? View.INVISIBLE
- : View.VISIBLE);
+ mQsContainer.setVisibility(
+ mKeyguardShowing && !expandVisually ? View.INVISIBLE : View.VISIBLE);
mScrollView.setTouchEnabled(mQsExpanded);
- mNotificationStackScroller.setTouchEnabled(!mQsExpanded);
+ mNotificationStackScroller.setTouchEnabled(!mQsExpanded || mQsExpansionFromOverscroll);
}
private void setQsExpansion(float height) {
@@ -640,9 +646,17 @@
mQsExpansionAnimator.cancel();
}
}
+
private void flingSettings(float vel, boolean expand) {
+ flingSettings(vel, expand, null);
+ }
+
+ private void flingSettings(float vel, boolean expand, final Runnable onFinishRunnable) {
float target = expand ? mQsMaxExpansionHeight : mQsMinExpansionHeight;
if (target == mQsExpansionHeight) {
+ if (onFinishRunnable != null) {
+ onFinishRunnable.run();
+ }
return;
}
ValueAnimator animator = ValueAnimator.ofFloat(mQsExpansionHeight, target);
@@ -657,6 +671,9 @@
@Override
public void onAnimationEnd(Animator animation) {
mQsExpansionAnimator = null;
+ if (onFinishRunnable != null) {
+ onFinishRunnable.run();
+ }
}
});
animator.start();