diff --git a/packages/SystemUI/res/layout/qs_panel.xml b/packages/SystemUI/res/layout/qs_panel.xml index bb37b83af3366..45236a075e72f 100644 --- a/packages/SystemUI/res/layout/qs_panel.xml +++ b/packages/SystemUI/res/layout/qs_panel.xml @@ -18,13 +18,16 @@ android:id="@+id/quick_settings_container" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="@drawable/qs_background_primary" - android:paddingBottom="8dp" - android:elevation="2dp"> + android:background="@drawable/qs_background_primary"> + android:layout_height="wrap_content" + android:paddingBottom="8dp" /> + + + diff --git a/packages/SystemUI/res/layout/status_bar_expanded.xml b/packages/SystemUI/res/layout/status_bar_expanded.xml index 89abe2dc2c4c3..289b1d9db32c1 100644 --- a/packages/SystemUI/res/layout/status_bar_expanded.xml +++ b/packages/SystemUI/res/layout/status_bar_expanded.xml @@ -39,32 +39,11 @@ android:clipToPadding="false" android:clipChildren="false"> - - - - - - - - - + android:layout_height="wrap_content" + android:layout_gravity="@integer/notification_panel_layout_gravity" /> - - = mScrollView.getX() && x <= mScrollView.getX() + mScrollView.getWidth()) && + return (x >= mQsContainer.getX() && x <= mQsContainer.getX() + mQsContainer.getWidth()) && (y <= mNotificationStackScroller.getBottomMostNotificationBottom() || y <= mQsContainer.getY() + mQsContainer.getHeight()); } @@ -948,7 +912,7 @@ public class NotificationPanelView extends PanelView implements amount = 0f; } float rounded = amount >= 1f ? amount : 0f; - mStackScrollerOverscrolling = rounded != 0f && isRubberbanded; + setOverScrolling(rounded != 0f && isRubberbanded); mQsExpansionFromOverscroll = rounded != 0f; mLastOverscroll = rounded; updateQsState(); @@ -964,12 +928,17 @@ public class NotificationPanelView extends PanelView implements @Override public void run() { mStackScrollerOverscrolling = false; - mQsExpansionFromOverscroll = false; + setOverScrolling(false); updateQsState(); } }, false /* isClick */); } + private void setOverScrolling(boolean overscrolling) { + mStackScrollerOverscrolling = overscrolling; + mQsContainer.setOverscrolling(overscrolling); + } + private void onQsExpansionStarted() { onQsExpansionStarted(0); } @@ -979,11 +948,7 @@ public class NotificationPanelView extends PanelView implements cancelHeightAnimator(); // Reset scroll position and apply that position to the expanded height. - float height = mQsExpansionHeight - mScrollView.getScrollY() - overscrollAmount; - if (mScrollView.getScrollY() != 0) { - mScrollYOverride = mScrollView.getScrollY(); - } - mScrollView.scrollTo(0, 0); + float height = mQsExpansionHeight - overscrollAmount; setQsExpansion(height); requestPanelHeightUpdate(); } @@ -995,9 +960,7 @@ public class NotificationPanelView extends PanelView implements updateQsState(); requestPanelHeightUpdate(); mFalsingManager.setQsExpanded(expanded); - mNotificationStackScroller.setInterceptDelegateEnabled(expanded); mStatusBar.setQsExpanded(expanded); - mQsPanel.setExpanded(expanded); mNotificationContainerParent.setQsExpanded(expanded); } } @@ -1011,15 +974,18 @@ public class NotificationPanelView extends PanelView implements mStatusBarState = statusBarState; mKeyguardShowing = keyguardShowing; + mQsContainer.setKeyguardShowing(mKeyguardShowing); if (goingToFullShade || (oldState == StatusBarState.KEYGUARD && statusBarState == StatusBarState.SHADE_LOCKED)) { animateKeyguardStatusBarOut(); - animateHeaderSlidingIn(); + long delay = mStatusBarState == StatusBarState.SHADE_LOCKED + ? 0 : mStatusBar.calculateGoingToFullShadeDelay(); + mQsContainer.animateHeaderSlidingIn(delay); } else if (oldState == StatusBarState.SHADE_LOCKED && statusBarState == StatusBarState.KEYGUARD) { animateKeyguardStatusBarIn(StackStateAnimator.ANIMATION_DURATION_STANDARD); - animateHeaderSlidingOut(); + mQsContainer.animateHeaderSlidingOut(); } else { mKeyguardStatusBar.setAlpha(1f); mKeyguardStatusBar.setVisibility(keyguardShowing ? View.VISIBLE : View.INVISIBLE); @@ -1050,95 +1016,6 @@ public class NotificationPanelView extends PanelView implements } }; - private final Animator.AnimatorListener mAnimateHeaderSlidingInListener - = new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - mHeaderAnimating = false; - mQsContainerAnimator = null; - mQsContainer.removeOnLayoutChangeListener(mQsContainerAnimatorUpdater); - } - }; - - private final OnLayoutChangeListener mQsContainerAnimatorUpdater - = new OnLayoutChangeListener() { - @Override - public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, - int oldTop, int oldRight, int oldBottom) { - int oldHeight = oldBottom - oldTop; - int height = bottom - top; - if (height != oldHeight && mQsContainerAnimator != null) { - PropertyValuesHolder[] values = mQsContainerAnimator.getValues(); - float newEndValue = mHeader.getCollapsedHeight() + mQsPeekHeight - height - top; - float newStartValue = -height - top; - values[0].setFloatValues(newStartValue, newEndValue); - mQsContainerAnimator.setCurrentPlayTime(mQsContainerAnimator.getCurrentPlayTime()); - } - } - }; - - private final ViewTreeObserver.OnPreDrawListener mStartHeaderSlidingIn - = new ViewTreeObserver.OnPreDrawListener() { - @Override - public boolean onPreDraw() { - getViewTreeObserver().removeOnPreDrawListener(this); - long delay = mStatusBarState == StatusBarState.SHADE_LOCKED - ? 0 - : mStatusBar.calculateGoingToFullShadeDelay(); - mHeader.setTranslationY(-mHeader.getCollapsedHeight() - mQsPeekHeight); - mHeader.animate() - .translationY(0f) - .setStartDelay(delay) - .setDuration(StackStateAnimator.ANIMATION_DURATION_GO_TO_FULL_SHADE) - .setInterpolator(Interpolators.FAST_OUT_SLOW_IN) - .start(); - mQsContainer.setY(-mQsContainer.getHeight()); - mQsContainerAnimator = ObjectAnimator.ofFloat(mQsContainer, View.TRANSLATION_Y, - mQsContainer.getTranslationY(), - mHeader.getCollapsedHeight() + mQsPeekHeight - mQsContainer.getHeight() - - mQsContainer.getTop()); - mQsContainerAnimator.setStartDelay(delay); - mQsContainerAnimator.setDuration(StackStateAnimator.ANIMATION_DURATION_GO_TO_FULL_SHADE); - mQsContainerAnimator.setInterpolator(Interpolators.FAST_OUT_SLOW_IN); - mQsContainerAnimator.addListener(mAnimateHeaderSlidingInListener); - mQsContainerAnimator.start(); - mQsContainer.addOnLayoutChangeListener(mQsContainerAnimatorUpdater); - return true; - } - }; - - private void animateHeaderSlidingIn() { - // If the QS is already expanded we don't need to slide in the header as it's already - // visible. - if (!mQsExpanded) { - mHeaderAnimating = true; - getViewTreeObserver().addOnPreDrawListener(mStartHeaderSlidingIn); - } - } - - private void animateHeaderSlidingOut() { - mHeaderAnimating = true; - mHeader.animate().y(-mHeader.getHeight()) - .setStartDelay(0) - .setDuration(StackStateAnimator.ANIMATION_DURATION_STANDARD) - .setInterpolator(Interpolators.FAST_OUT_SLOW_IN) - .setListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - mHeader.animate().setListener(null); - mHeaderAnimating = false; - updateQsState(); - } - }) - .start(); - mQsContainer.animate() - .y(-mQsContainer.getHeight()) - .setStartDelay(0) - .setDuration(StackStateAnimator.ANIMATION_DURATION_STANDARD) - .setInterpolator(Interpolators.FAST_OUT_SLOW_IN) - .start(); - } - private final Runnable mAnimateKeyguardStatusBarInvisibleEndRunnable = new Runnable() { @Override public void run() { @@ -1262,19 +1139,10 @@ public class NotificationPanelView extends PanelView implements } private void updateQsState() { - boolean expandVisually = mQsExpanded || mStackScrollerOverscrolling || mHeaderAnimating; - mHeader.setVisibility((mQsExpanded || !mKeyguardShowing || mHeaderAnimating) - ? View.VISIBLE - : View.INVISIBLE); - mHeader.setExpanded((mKeyguardShowing && !mHeaderAnimating) - || (mQsExpanded && !mStackScrollerOverscrolling)); + mQsContainer.setExpanded(mQsExpanded); mNotificationStackScroller.setScrollingEnabled( mStatusBarState != StatusBarState.KEYGUARD && (!mQsExpanded || mQsExpansionFromOverscroll)); - mQsPanel.setVisibility(expandVisually ? View.VISIBLE : View.INVISIBLE); - mQsContainer.setVisibility( - mKeyguardShowing && !expandVisually ? View.INVISIBLE : View.VISIBLE); - mScrollView.setTouchEnabled(mQsExpanded); updateEmptyShadeView(); mQsNavbarScrim.setVisibility(mStatusBarState == StatusBarState.SHADE && mQsExpanded && !mStackScrollerOverscrolling && mQsScrimEnabled @@ -1298,11 +1166,10 @@ public class NotificationPanelView extends PanelView implements } } mQsExpansionHeight = height; - mHeader.setExpansion(getHeaderExpansionFraction()); - setQsTranslation(height); + updateQsExpansion(); requestScrollerTopPaddingUpdate(false /* animate */); if (mKeyguardShowing) { - updateHeaderKeyguard(); + updateHeaderKeyguardAlpha(); } if (mStatusBarState == StatusBarState.SHADE_LOCKED || mStatusBarState == StatusBarState.KEYGUARD) { @@ -1329,6 +1196,10 @@ public class NotificationPanelView extends PanelView implements } } + private void updateQsExpansion() { + mQsContainer.setQsExpansion(getQsExpansionFraction(), getHeaderTranslation()); + } + private String getKeyguardOrLockScreenString() { if (mStatusBarState == StatusBarState.KEYGUARD) { return getContext().getString(R.string.accessibility_desc_lock_screen); @@ -1337,23 +1208,6 @@ public class NotificationPanelView extends PanelView implements } } - private float getHeaderExpansionFraction() { - if (!mKeyguardShowing) { - return getQsExpansionFraction(); - } else { - return 1f; - } - } - - private void setQsTranslation(float height) { - if (!mHeaderAnimating) { - mQsContainer.setY(height - mQsContainer.getDesiredHeight() + getHeaderTranslation()); - } - if (mKeyguardShowing && !mHeaderAnimating) { - mHeader.setY(interpolate(getQsExpansionFraction(), -mHeader.getHeight(), 0)); - } - } - private float calculateQsTopPadding() { if (mKeyguardShowing && (mQsExpandImmediate || mIsExpanding && mQsExpandedWhenExpandingStarted)) { @@ -1372,7 +1226,7 @@ public class NotificationPanelView extends PanelView implements mQsMinExpansionHeight, max); } else if (mQsSizeChangeAnimator != null) { return (int) mQsSizeChangeAnimator.getAnimatedValue(); - } else if (mKeyguardShowing && mScrollYOverride == -1) { + } else if (mKeyguardShowing) { // We can only do the smoother transition on Keyguard when we also are not collapsing // from a scrolled quick settings. @@ -1386,7 +1240,6 @@ public class NotificationPanelView extends PanelView implements private void requestScrollerTopPaddingUpdate(boolean animate) { mNotificationStackScroller.updateTopPadding(calculateQsTopPadding(), - mScrollView.getScrollY(), mAnimateNextTopPaddingChange || animate, mKeyguardShowing && (mQsExpandImmediate || mIsExpanding && mQsExpandedWhenExpandingStarted)); @@ -1428,7 +1281,6 @@ public class NotificationPanelView extends PanelView implements boolean isClick) { float target = expand ? mQsMaxExpansionHeight : mQsMinExpansionHeight; if (target == mQsExpansionHeight) { - mScrollYOverride = -1; if (onFinishRunnable != null) { onFinishRunnable.run(); } @@ -1438,7 +1290,6 @@ public class NotificationPanelView extends PanelView implements if (belowFalsingThreshold) { vel = 0; } - mScrollView.setBlockFlinging(true); ValueAnimator animator = ValueAnimator.ofFloat(mQsExpansionHeight, target); if (isClick) { animator.setInterpolator(Interpolators.TOUCH_RESPONSE); @@ -1458,8 +1309,6 @@ public class NotificationPanelView extends PanelView implements animator.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { - mScrollView.setBlockFlinging(false); - mScrollYOverride = -1; mQsExpansionAnimator = null; if (onFinishRunnable != null) { onFinishRunnable.run(); @@ -1478,11 +1327,11 @@ public class NotificationPanelView extends PanelView implements if (!mQsExpansionEnabled || mCollapsedOnDown) { return false; } - View header = mKeyguardShowing ? mKeyguardStatusBar : mHeader; + View header = mKeyguardShowing ? mKeyguardStatusBar : mQsContainer.getHeader(); boolean onHeader = x >= header.getX() && x <= header.getX() + header.getWidth() && y >= header.getTop() && y <= header.getBottom(); if (mQsExpanded) { - return onHeader || (mScrollView.isScrolledToBottom() && yDiff < 0) && isInQsArea(x, y); + return onHeader || (yDiff < 0 && isInQsArea(x, y)); } else { return onHeader; } @@ -1494,7 +1343,7 @@ public class NotificationPanelView extends PanelView implements return mStatusBar.getBarState() == StatusBarState.KEYGUARD || mNotificationStackScroller.isScrolledToBottom(); } else { - return mScrollView.isScrolledToBottom(); + return true; } } @@ -1571,11 +1420,7 @@ public class NotificationPanelView extends PanelView implements * collapsing QS / the panel when QS was scrolled */ private int getTempQsMaxExpansion() { - int qsTempMaxExpansion = mQsMaxExpansionHeight; - if (mScrollYOverride != -1) { - qsTempMaxExpansion -= mScrollYOverride; - } - return qsTempMaxExpansion; + return mQsMaxExpansionHeight; } private int calculatePanelHeightShade() { @@ -1613,20 +1458,12 @@ public class NotificationPanelView extends PanelView implements + notificationHeight; if (totalHeight > mNotificationStackScroller.getHeight()) { float fullyCollapsedHeight = maxQsHeight - + mNotificationStackScroller.getMinStackHeight() - - getScrollViewScrollY(); + + mNotificationStackScroller.getMinStackHeight(); totalHeight = Math.max(fullyCollapsedHeight, mNotificationStackScroller.getHeight()); } return (int) totalHeight; } - private int getScrollViewScrollY() { - if (mScrollYOverride != -1 && !mQsTracking) { - return mScrollYOverride; - } else { - return mScrollView.getScrollY(); - } - } private void updateNotificationTranslucency() { float alpha = 1f; if (mClosingWithAlphaFadeOut && !mExpandingFromHeadsUp && !mHeadsUpManager.hasPinnedHeadsUp()) { @@ -1678,18 +1515,9 @@ public class NotificationPanelView extends PanelView implements */ private void updateHeader() { if (mStatusBar.getBarState() == StatusBarState.KEYGUARD) { - updateHeaderKeyguard(); - } else { - updateHeaderShade(); + updateHeaderKeyguardAlpha(); } - - } - - private void updateHeaderShade() { - if (!mHeaderAnimating) { - mHeader.setTranslationY(getHeaderTranslation()); - } - setQsTranslation(mQsExpansionHeight); + updateQsExpansion(); } private float getHeaderTranslation() { @@ -1744,11 +1572,6 @@ public class NotificationPanelView extends PanelView implements && !mDozing ? VISIBLE : INVISIBLE); } - private void updateHeaderKeyguard() { - updateHeaderKeyguardAlpha(); - setQsTranslation(mQsExpansionHeight); - } - private void updateKeyguardBottomAreaAlpha() { float alpha = Math.min(getKeyguardContentsAlpha(), 1 - getQsExpansionFraction()); mKeyguardBottomArea.setAlpha(alpha); @@ -1781,7 +1604,6 @@ public class NotificationPanelView extends PanelView implements mNotificationStackScroller.onExpansionStopped(); mHeadsUpManager.onExpandingFinished(); mIsExpanding = false; - mScrollYOverride = -1; if (isFullyCollapsed()) { DejankUtils.postAfterTraversal(new Runnable() { @Override @@ -1811,9 +1633,8 @@ public class NotificationPanelView extends PanelView implements } private void setListening(boolean listening) { - mHeader.setListening(listening); + mQsContainer.setListening(listening); mKeyguardStatusBar.setListening(listening); - mQsPanel.setListening(listening); } @Override @@ -1931,7 +1752,7 @@ public class NotificationPanelView extends PanelView implements @Override public void onClick(View v) { - if (v == mHeader) { + if (v == mQsContainer.getHeader()) { onQsExpansionStarted(); if (mQsExpanded) { flingSettings(0 /* vel */, false /* expand */, null, true /* isClick */); @@ -2149,24 +1970,16 @@ public class NotificationPanelView extends PanelView implements return mConflictingQsExpansionGesture && mQsExpanded; } - public void notifyVisibleChildrenChanged() { - if (mNotificationStackScroller.getNotGoneChildCount() != 0) { - mReserveNotificationSpace.setVisibility(View.VISIBLE); - } else { - mReserveNotificationSpace.setVisibility(View.GONE); - } - } - public boolean isQsExpanded() { return mQsExpanded; } public boolean isQsDetailShowing() { - return mQsPanel.isShowingDetail(); + return mQsContainer.getQsPanel().isShowingDetail(); } public void closeQsDetail() { - mQsPanel.closeDetail(); + mQsContainer.getQsPanel().closeDetail(); } @Override @@ -2254,7 +2067,7 @@ public class NotificationPanelView extends PanelView implements private final Runnable mUpdateHeader = new Runnable() { @Override public void run() { - mHeader.updateEverything(); + mQsContainer.getHeader().updateEverything(); } }; @@ -2400,8 +2213,7 @@ public class NotificationPanelView extends PanelView implements protected void setVerticalPanelTranslation(float translation) { mNotificationStackScroller.setTranslationX(translation); - mScrollView.setTranslationX(translation); - mHeader.setTranslationX(translation); + mQsContainer.setTranslationX(translation); } private void updateStackHeight(float stackHeight) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQuickSettingsContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQuickSettingsContainer.java index fd28b095c09de..7cc720df1c270 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQuickSettingsContainer.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQuickSettingsContainer.java @@ -33,7 +33,7 @@ import com.android.systemui.R; public class NotificationsQuickSettingsContainer extends FrameLayout implements ViewStub.OnInflateListener { - private View mScrollView; + private View mQsContainer; private View mUserSwitcher; private View mStackScroller; private View mKeyguardStatusBar; @@ -47,7 +47,7 @@ public class NotificationsQuickSettingsContainer extends FrameLayout @Override protected void onFinishInflate() { super.onFinishInflate(); - mScrollView = findViewById(R.id.scroll_view); + mQsContainer = findViewById(R.id.quick_settings_container); mStackScroller = findViewById(R.id.notification_stack_scroller); mKeyguardStatusBar = findViewById(R.id.keyguard_header); ViewStub userSwitcher = (ViewStub) findViewById(R.id.keyguard_user_switcher); @@ -58,7 +58,7 @@ public class NotificationsQuickSettingsContainer extends FrameLayout @Override protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); - reloadWidth(mScrollView); + reloadWidth(mQsContainer); reloadWidth(mStackScroller); } @@ -80,11 +80,11 @@ public class NotificationsQuickSettingsContainer extends FrameLayout boolean userSwitcherVisible = mInflated && mUserSwitcher.getVisibility() == View.VISIBLE; boolean statusBarVisible = mKeyguardStatusBar.getVisibility() == View.VISIBLE; - View stackQsTop = mQsExpanded ? mStackScroller : mScrollView; - View stackQsBottom = !mQsExpanded ? mStackScroller : mScrollView; + View stackQsTop = mQsExpanded ? mStackScroller : mQsContainer; + View stackQsBottom = !mQsExpanded ? mStackScroller : mQsContainer; // Invert the order of the scroll view and user switcher such that the notifications receive // touches first but the panel gets drawn above. - if (child == mScrollView) { + if (child == mQsContainer) { return super.drawChild(canvas, userSwitcherVisible && statusBarVisible ? mUserSwitcher : statusBarVisible ? mKeyguardStatusBar : userSwitcherVisible ? mUserSwitcher @@ -104,7 +104,7 @@ public class NotificationsQuickSettingsContainer extends FrameLayout return super.drawChild(canvas, stackQsTop, drawingTime); - }else { + } else { return super.drawChild(canvas, child, drawingTime); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index 50a49a1dbd2c1..f382fe05650aa 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -1599,12 +1599,6 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, updateNotifications(); } - @Override - protected void updateRowStates() { - super.updateRowStates(); - mNotificationPanel.notifyVisibleChildrenChanged(); - } - @Override protected void setAreThereNotifications() { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java index 49e9c3db9f308..a75ac8219aa3c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java @@ -213,7 +213,6 @@ public class NotificationStackScrollLayout extends ViewGroup * animating. */ private boolean mOnlyScrollingInThisMotion; - private ViewGroup mScrollView; private boolean mInterceptDelegateEnabled; private boolean mDelegateToScrollView; private boolean mDisallowScrollingInThisMotion; @@ -281,6 +280,7 @@ public class NotificationStackScrollLayout extends ViewGroup setDimAmount((Float) animation.getAnimatedValue()); } }; + private ViewGroup mQsContainer; public NotificationStackScrollLayout(Context context) { this(context, null); @@ -630,12 +630,8 @@ public class NotificationStackScrollLayout extends ViewGroup mLongPressListener = listener; } - public void setScrollView(ViewGroup scrollView) { - mScrollView = scrollView; - } - - public void setInterceptDelegateEnabled(boolean interceptDelegateEnabled) { - mInterceptDelegateEnabled = interceptDelegateEnabled; + public void setQsContainer(ViewGroup qsContainer) { + mQsContainer = qsContainer; } public void onChildDismissed(View v) { @@ -883,13 +879,6 @@ public class NotificationStackScrollLayout extends ViewGroup public boolean onTouchEvent(MotionEvent ev) { boolean isCancelOrUp = ev.getActionMasked() == MotionEvent.ACTION_CANCEL || ev.getActionMasked()== MotionEvent.ACTION_UP; - if (mDelegateToScrollView) { - if (isCancelOrUp) { - mDelegateToScrollView = false; - } - transformTouchEvent(ev, this, mScrollView); - return mScrollView.onTouchEvent(ev); - } handleEmptySpaceClick(ev); boolean expandWantsIt = false; if (mIsExpanded && !mSwipingInProgress && !mOnlyScrollingInThisMotion) { @@ -929,6 +918,9 @@ public class NotificationStackScrollLayout extends ViewGroup if (!isScrollingEnabled()) { return false; } + if (ev.getY() < mQsContainer.getBottom()) { + return false; + } initVelocityTrackerIfNotExists(); mVelocityTracker.addMovement(ev); @@ -1776,15 +1768,13 @@ public class NotificationStackScrollLayout extends ViewGroup * account. * * @param qsHeight the top padding imposed by the quick settings panel - * @param scrollY how much the notifications are scrolled inside the QS/notifications scroll - * container * @param animate whether to animate the change * @param ignoreIntrinsicPadding if true, {@link #getIntrinsicPadding()} is ignored and * {@code qsHeight} is the final top padding */ - public void updateTopPadding(float qsHeight, int scrollY, boolean animate, + public void updateTopPadding(float qsHeight, boolean animate, boolean ignoreIntrinsicPadding) { - float start = qsHeight - scrollY; + float start = qsHeight; float stackHeight = getHeight() - start; int minStackHeight = getMinStackHeight(); if (stackHeight <= minStackHeight) { @@ -1867,15 +1857,6 @@ public class NotificationStackScrollLayout extends ViewGroup @Override public boolean onInterceptTouchEvent(MotionEvent ev) { - if (mInterceptDelegateEnabled) { - transformTouchEvent(ev, this, mScrollView); - if (mScrollView.onInterceptTouchEvent(ev)) { - mDelegateToScrollView = true; - removeLongPressCallback(); - return true; - } - transformTouchEvent(ev, mScrollView, this); - } initDownStates(ev); handleEmptySpaceClick(ev); boolean expandWantsIt = false;