OSDN Git Service

Not showing menu buttons for any headsup notification
authorshawnlin <shawnlin@google.com>
Wed, 15 May 2019 12:06:10 +0000 (20:06 +0800)
committershawnlin <shawnlin@google.com>
Sun, 19 May 2019 07:00:22 +0000 (15:00 +0800)
Since swipe to remove notification behavior was rolled back to P which allows user to
remove a notification in both direction. We should not showing menu
buttons for any heads up notification either as in P.

Now it depends on the mIsUsingBidirectionalSwipe flag of NotificationMenuRow
to show menu buttons & the background.

Bug: 132668574
Test: send headsup notifications and swipe left/right
case and swipe left/right to check the background.

Change-Id: I5b96faed05d6184e02a8ede08f5e7c04ba5c456a

packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSwipeHelper.java

index de187f1..7ee0fbc 100644 (file)
@@ -913,7 +913,8 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd
             if (child.getVisibility() != View.GONE
                     && child instanceof ExpandableNotificationRow) {
                 ExpandableNotificationRow row = (ExpandableNotificationRow) child;
-                if ((row.isPinned() || row.isHeadsUpAnimatingAway()) && row.getTranslation() < 0) {
+                if ((row.isPinned() || row.isHeadsUpAnimatingAway()) && row.getTranslation() < 0
+                        && row.getProvider().shouldShowGutsOnSnapOpen()) {
                     top = Math.min(top, row.getTranslationY());
                     bottom = Math.max(bottom, row.getTranslationY() + row.getActualHeight());
                 }
@@ -4378,6 +4379,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd
         mStackScrollAlgorithm.setIsExpanded(isExpanded);
         mAmbientState.setShadeExpanded(isExpanded);
         mStateAnimator.setShadeExpanded(isExpanded);
+        mSwipeHelper.setIsExpanded(isExpanded);
         if (changed) {
             if (!mIsExpanded) {
                 mGroupManager.collapseAllGroups();
index 4569b66..0f71192 100644 (file)
@@ -48,6 +48,7 @@ class NotificationSwipeHelper extends SwipeHelper
     private static final long SWIPE_MENU_TIMING = 200;
 
     private NotificationMenuRowPlugin mCurrMenuRow;
+    private boolean mIsExpanded;
 
     public NotificationSwipeHelper(int swipeDirection, NotificationCallback callback,
             Context context, NotificationMenuRowPlugin.OnMenuEventListener menuListener) {
@@ -97,6 +98,10 @@ class NotificationSwipeHelper extends SwipeHelper
         return mFalsingCheck;
     }
 
+    public void setIsExpanded(boolean isExpanded) {
+        mIsExpanded = isExpanded;
+    }
+
     @Override
     protected void onChildSnappedBack(View animView, float targetLeft) {
         if (mCurrMenuRow != null && targetLeft == 0) {
@@ -200,7 +205,9 @@ class NotificationSwipeHelper extends SwipeHelper
         boolean slowSwipedFarEnough = swipedEnoughToShowMenu(menuRow) && isSlowSwipe;
         boolean isFastNonDismissGesture =
                 gestureFastEnough && !gestureTowardsMenu && !isDismissGesture;
-        boolean isMenuRevealingGestureAwayFromMenu = slowSwipedFarEnough || isFastNonDismissGesture;
+        boolean isAbleToShowMenu = menuRow.shouldShowGutsOnSnapOpen() || mIsExpanded;
+        boolean isMenuRevealingGestureAwayFromMenu = slowSwipedFarEnough
+                || (isFastNonDismissGesture && isAbleToShowMenu);
         int menuSnapTarget = menuRow.getMenuSnapTarget();
         boolean isNonFalseMenuRevealingGesture =
                 !isFalseGesture(ev) && isMenuRevealingGestureAwayFromMenu;