This callback checks the given child is actually draggable or not.
This method is need for ARC, since a child may not be draggable in
some cases.
FYI: ag/3244118 is the CL for NYC ARC.
Bug: 63874929
Bug: 62602530
Test: Compile and ran 'runtest systemui'
Change-Id: I085f1c1c72240529a19e0dcb1f543e7cb36899f0
An incremental improvement to keyboard support on the status bar.
SwipeHelper calls a method on ExpandableNotificationRow, which it then
manually invokes from keydown/ups and the AccessibilityAction shortcut.
Regular clicks on the lockscreen still do not activate the notification.
Bug: 34840327
Test: manual
Change-Id: I5b59dec26c5e20237c4136820fff902ff8221371
ExpandableNotificationRow now handles long-clicks for keyboard support.
SwipeHelper calls performLongClick to trigger the listener on the row.
Now that the View listens to long clicks, SwipeHelper cancels
long-presses on the View when it see touch down events, so the event
doesn't get duped in the touch case.
Bug: 34840327
Test: manual
Change-Id: Ibeb93507781443d6b2dac209afd889b1d8d54aeb
Because we going back to the keyguard, the translation was
reset and the callback would not be called, leaving us with
a stuck notification.
Test: have only 1 notification in shade locked an swipe it away after doing a half-swipe first
Change-Id: Iea2db4ff7efa2e84aa36cd13cfa8cfa1859d6892
Fixes: 64762751
This will allow the NotificationMenuRow plugin to do something else
rather than showing a menu when the view is long pressed.
- Allow menu to intercept touch events
- If the menu item provided to long press is null, don’t show it
- Also passes the status bar notification when the menu is created
or updated
Bug: 62534409
Test: manual, have no plugin and long press -> see notification info
have a plugin that returns null for long press -> nothing happens
Change-Id: I384c5217d5343e990f4c3506eb2477b015705e5c
If it's a false touch don't show the menu.
Test: manual: try swiping things away on the lockscreen (fast + long)
try showing notification menu on the lockscreen
Bug: 38208094
Change-Id: I16ceedd90a5fbc80156a9495d6cfd6fa02771886
Add a width dimension that the children of the
NotificationStackScrollLayout can use to make a separate MeasureSpec for
its children.
Also, adjust the translation of the row so that the row can be swiped
off screen without any clipping if the width is smaller than the
notification panel itself.
Test: booted on phone and Android Auto headunit
Bug: 36692077
Change-Id: Ic8bb8a707c4d91f4e38d5ee3461b406bf14d0042
1) If the snap back animation is cancelled, the menu shouldn't be reset
because it hasn't actually been snapped back -- this could happen when
the menu was being shown and then the icon alpha would get set to 0
resulting in notification snapped to menu but no menu visible
2) Cancel the callback to fade the menu in on dismiss to match original
behavior before refactor of NMR
Test: manual - no clear repro steps for this, I could get it by
violently moving a notification back and forth, with this patch
I haven't been able to repro it.
Bug: 37320279
Change-Id: I4eea37e3c454e7324d0e295b0ec2fe022d219253
- Increases minimum velocity for dismiss (100->500 dp/sec)
- Increases minimum distance for dismiss (40->60% of notification width)
- Alters logic when menu was already showing and notification
gets moved (if it doesn't move enough sticks to menu, else it looks
for dismiss or snap back into position)
- Changes swipe helper so that the dismiss direction takes the
translation into account
Test: manual / had some people play with the gesture
Bug: 28693375
Change-Id: Ibe4c51627a78b9c3b7d889cf7e06a63da7113072
1) Updates the notification menu plugin to do more:
- The plugin can now supply the view it wants to display behind a
notification as the menu
- Touch interaction (i.e. notification translating on top) is piped
through to the plugin so it can update the view behind the notification
2) Makes NotificationMenuRow an implementor of the plugin which moves
a bunch of that logic out of NotificationStackScroller
Test: runtest systemui
Change-Id: I8723b96c195ff7311317d5523418cfcbe2a79b52
This will allow plugins to supply additional menu options to the
menu "behind" a notification.
This CL does not include behavior for when one of these new menu
items is tapped, this will be added in a separate CL.
Test: manual
Change-Id: I322f9f39d33b043bd23dcbede5dd15e6afa73fc1
If a notification is updated to be non clearable but is in the middle of
being dismissed then it is snapped back into place. Part of the ways to
check if it was being dismissed is by checking the translation of the
notification.
In the case that the notification was translated to display the gear, then
when it was updated it would be snapped back over the gear. This CL fixes
this issue by snapping back to the gear instead of 0 in this situation.
Bug: 28019486
Change-Id: Ic6c4c29b0adee15d7b358fcdbc8446e8a4cd9f82
Shouldn't animate the whole view, use the translatable views so that
they get clipped on tablet / landscape.
Additionally this changes the behavior in the case where the gear
might be showing, previously that would hide prior to the dismiss
all animation, UX prefers this to just have the notification cover
the gear and slide away or the gear fade away depending on the side
it's showing.
Bug: 28006639
Change-Id: I43027cb29410496de5b6e09c4a0c57a69484295c
An accelerated interpolator is used for dismissing when the
the velocity = 0 which can occur with dismiss all or if the
noti is swiped far enough but not fast enough.
There is no duration specified when the noti is swiped far
enough, and the velocity passed in is 0 so the default
duration is used without taking into account the velocity.
This CL alters the code to pass in the velocity so that a
duration is calculated.
Bug: 27864379
Change-Id: Ifac04bb8d1b714c040102fef035d55737c844157
The clause used there was using a reused value of a motion event
and therefore not trigger, even if it should have.
Also added a clause which this was actually used for to remove
the long press callback when using the inline settings slider.
Bug: 27352426
Change-Id: I9c432eeb354d7d5e72b375cfc5ead9e04a4e6c81
When a notification is being removed by swiping action,
actual removing will be performed after the swiping animation ends.
And also, it is same when removing notifications with <Clear all> button.
The actual removing will be performed after collapsing of status bar.
But before actual removing, the notification flags can be updated
to not clearable, and then the notification view can be remain
out of display by X-translation animation.
Therefore, fix to snap the notification view back when updating
if it is not clearable and need to be come back.
Change-Id: I005a9a8ac82bb513a47b5b8afc430bbe4880b52e
This reverts commit 88eca2aa0e.
It additionally fixes an issue with notification scrolling after gear is displayed
by indicating that the user is no longer swiping by calling onDragCancelled
Change-Id: Ieba0cea35bba9c383d8b5fdca08cb5ff083666c3
Addressing comment in ag/877913 PS6
Adds FlingAnimationUtils to SwipeHelper for dismissing notification
so that it may better follow a user's finger. This is not used
when a dismiss all is called (i.e. useAcceleration is requested).
Additionally alters dismiss behavior to accelerate out if velocity
was 0.
Change-Id: Ia7dc15d64e8427d5cfbdee3f4e48ccd60f5b0b36
If the gesture on the notification was not considered a dismiss gesture
the code always check if the notification had moved enough to display
the gear.
This causes some undesirable behavior:
- For unclearable notifications the gear would *always* be shown
- Even if the velocity of the gesture was enough to be a dismiss it
may have failed other requirements and then the gear would be
shown
This CL alters NotificationSwipeHelper to take into account the
velocity of the gesture, and if it was great enough to be a dismiss
but wasn't (unclearable, didn't meet other requirements) it'll just
snap the notification back into place.
Additionally this CL alters the behavior so that if the gear is
visible and the notification is swiped in the direction of the gear
it *won't* dismiss the notification but rather cover the gear. If
a dismiss gesture is made in the opposite direction of the gear, the
notification will still be dismissed.
Bug: 27378399
Bug: 27319053
Bug: 27335353
Change-Id: I0849eecc71f2c6722e811d284534c2ea29b1b8aa
Currently you can swipe / translate inline controls, this
should not be possible. This CL fixes that.
Bug: 22451710
Change-Id: I3e048dce7df6d44ce80ee79bd449973bde0bc222
- Added a view to display / control the gear behind the noti
- Updated SwipeHelper to hide / show the gear based on the gesture
- Only one notification or notification group can show the gear
at a time
Couple of things left to do that will come in a follow up CL:
- Animation (to / from inline controls, fading gear based on movement)
- For children in a group there needs to be a grey background
Bug: 22451710
Change-Id: I2f93edf48109a82bab0839c73cbaba1535caee9a
Make sure to only enter dismiss mode if xDiff is bigger than yDiff,
and only start scrolling if yDiff is bigger than xDiff.
Change-Id: Id898752ff7a08df549e234678aed0dad074b202d
Previously many objects parsed their own interpolators leading
to memory and computational overhead.
This is now unified into a single Static class.
Change-Id: I0537aca0e6dad10a7ffd52ba64b7356b0c5e4672
- Introduces notion of ignored tasks for the purposes of layout in
TaskStackView. This can be used during drag and drop, and while
dismissing to calculate the state of the stack without the task that
the user is currently interacting with.
- Fixing minor layout issue when the front/back task transforms are
improperly calculated when there is a single task
- Fixing minor issue when the anchor task is calculated incorrectly when
dismissing task views
Change-Id: I1eb0864a52e53562e4d573a6ed4f8a5a1615aff9
- Removing calls to ensureCapacity, which was causing reallocations when
using a temporary set with multiple uses.
- Fixing issue with update callback not being called when immediately
updating a TaskView’s transform
- Adding utility methods in preparation for refactoring code
Change-Id: If62c3751ed6af15092a34435df08bb4d627536ea
Note: the guts are still trucated to the height of the notification.
The slider initially shows the importance of the individual notification,
but changing the slider changes the importance for the whole group
of notifications.
Bug: 22451710
Change-Id: Id6de3aaace2bdb88a8cc5db517002dc7f0e349ae
Newly enforcing a threshold for the following cases:
Unlocking, Dismissing Notifications, Swiping Down Quick settings.
Also increased the affordance threshold slightly.
Bug: 15433087
Change-Id: I723346dedf9ae0e3f8b103182992ab572fc394b9
When longpressing a notification, instead of popping up a
menu we now replace the notification's view with an
inspector showing the app name and icon inline, along with a
proper app info button.
Bug: 15892646
Change-Id: I905e2fd5c9ea5cbbaccabd633f4b8257227a10bc
A new text button is added to the bottom of the notification list
enabling the user to clear all notifications.
Bug: 14826666
Change-Id: I34dcccb59346798cca321bc1a19252b00e7c5689