Updates to existing bubbles now cause the bubble bar to animate in
similarly to new bubble notifications.
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Bug: 280605846
Test: manual
Change-Id: Ib53316889170e0392f055242c6206882084b4a46
This change handles touches on the bubble bar while the bubble bar is animating.
We now update the taskbar touch region during the animation to make the bubble bar touchable.
When the bubble bar is touched during the animation, we now cancel the animation and allow dragging or clicking to expand.
Demo: http://recall/-/bJtug1HhvXkkeA4MQvIaiP/gtGS6FCrygN5RKueFtPs5E
BubbleBarTest 100x run: https://android-build.corp.google.com/abtd/run/L42600030003675041
Note that in the abtd run above there's a flake but that's for a different test which I'll look into separately.
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Bug: 280605790
Bug: 280605846
Bug: 339066271
Fixes: 339244038
Test: See demo
Test: atest BubbleBarViewAnimatorTest
Change-Id: Icb8f4fa46ae4bb8c94ca931193d4a3cc49c5b718
This change animates the bubble bar for the first bubble.
When we're in home -- the bubble bar bounces in and stays visible
When we're in app -- the bubble bar bounces in, then animates to
the stashed handle.
When the bubble bar auto expands, we currently animate the bubble
bar already expanded. In the future we'll time the expansion
until after the bubble bar settles in.
Demo: http://recall/-/bJtug1HhvXkkeA4MQvIaiP/hIGwtb3YKyCT9Ke9adZNgY
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Bug: 339066271
Test: atest BubbleBarViewAnimatorTest
Change-Id: I80ce55676b72a50bab23623e0b5c1e602690682f
This change handles cancelling the currently running bubble animation when the stash state is changing.
Demo - http://recall/-/bJtug1HhvXkkeA4MQvIaiP/4jnBgnFaIPez6m7fVLSlf
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Bug: 280605846
Test: atest BubbleBarViewAnimatorTest
Change-Id: I34628f8ad741228dd21285ad66e45ef2909fbdab
Adds support to pin bubble bar to other side of the screen by dragging
from one bubble. The entire bubble bar will move to the other side.
Implements the BaseBubbleBarPinController to handle dragging an
individual BubbleView.
Updates how translation and alpha get applied during BubbleBarView
location animation when a bubble is being dragged.
Dragged bubble is part of the BubbleBarView and when it is being
dragged, and we animate the bubble bar to the other side, we need to
ensure that the animation does not affect the dragged bubble.
Updating the translation and alpha for the BubbleBarView ViewGroup will
affect the dragged bubble as well. Updating how translation and alpha
gets applied to BubbleBarView so that it gets applied to individual
child views and then we can skip applying it to the dragged view.
Bug: 330585402
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Test: drag bubble from expanded bubble bar to left and right
Change-Id: I1fe2ba9fd466ff97d3b3af763bdcce30c3f98606
Create a new API to animate bubble bar position.
Animating it will not update its laid out location.
To update bubble bar laid out location, BubbleBarUpdate can be used.
Applying a location change from BubbleBarUpdate no longer animates the
change.
Bug: 330585402
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Test: long press bubble bar and drag it to left and right
Change-Id: I2572da4c063fc8e07cf07c4303778d343baa4ec4
This change updates that animation that plays when a new bubble notification is received. We now animate the entire bubble bar rather than the individual bubble.
Demo: http://recall/-/bJtug1HhvXkkeA4MQvIaiP/dwbsZJZlqLwJ2IG7RfJZ7c
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Bug: 280605846
Test: atest BubbleBarViewAnimatorTest
Change-Id: I2dc58ad61b880d76c9eefa462c3aee4e8bbb3584
Make the animating bubble touchable and expand the bubble bar when tapping on it.
Demo: http://recall/-/bJtug1HhvXkkeA4MQvIaiP/c4wBVtrT5YIgxL5kVuuoDU
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Bug: 280605846
Test: atest BubbleBarViewAnimatorTest
Change-Id: I09281c2ebc9921750ada42dfc27e95d1ad0bd83b
Made bubble bar icon size adjustable and listen to the task bar
icon size changes. Additionally fixes an issue where the pointer arrow
could be misplaced.
Test: BubbleBarViewAnimatorTest.kt
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Bug: 295027436
Fixes: 334781761
Change-Id: Ie4ceee84cc00baa0186a3d5b431080c8495c7285
This change suppresses the new bubble animation when the notification shade is open and when the device is locked.
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Fixes: 332912942
Test: manual
- Use test app to trigger a bubble with delay
- Lock the device/pull down the notification shade
- Observe the bubble is not animating
- Unlock/collapse the shade
- Observe new bubble was added to the bubble bar
Change-Id: I0b1d42a9d57b29807f113ae45ff60349341272ef
When launcher receives the initial bubble state update from sysui, don't animate the bubbles. The initial update is sent when bubble bar is created and not when new bubbles are created.
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Bug: 280605846
Test: manual
Change-Id: I74b09220be22d7382fa6d7c1351d5e60a799a054
Check whether the state update indicates that the bubble bar is expanding, and pass that to the bubblebarviewcontroller so that we can suppress the new bubble animation if we're expanding from stashed.
Note that in some cases the notification service may not include the auto expand flag on the message it sends to sysui, so launcher will end up getting 2 separate messages. We may need to handle that separately.
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Bug: 280605846
Test: manual
- create bubble that auto expands
- observe that the bubble does not animate
- note that in some cases the notification service may not include the auto expand flag, will look into that separately.
Change-Id: Id7e2db5fd32d391413c57d83effb4b23b1085125
Shell keeps track of bubble bar bounds for positioning and animating the
expanded view.
Bubble bar location can be changed when dragging the expanded view or
bubble bar itself.
Previously bounds were only reported when expanding a bubble. But after
adding drag support, bounds can change outside of expand action.
Implement a new bubbles API to report bubble bar bounds to shell
whenever they change in launcher.
Keep track of last reported bounds to ensure that we only send bounds
over when they change and when expand API has not already reported the
bounds.
Bug: 332423960
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Test: drag expanded bubble from one side to the other, collapse it,
observe that collapse animation collapses the view into the bar
Change-Id: If1bf31a04b8f134a1b055fddccd276e924ed98b6
This change animates a new bubble bar bubble. Currently only handles the case where the bubble is added when the bubble bar is stashed.
There's no synchronization with the stash handle yet either.
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Bug: 280605790
Test: atest BubbleBarViewAnimatorTest
Change-Id: Ic3f5edc0dde204f871cf7e1288bd50620e6beebb
Only set bubble bar alpha to 0 and mark it collapsed when bubbles are
hidden.
When bubble bar should be hidden due to system ui state, only update
visibility.
Bug: 324068295
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Test: trigger a buble from bubbles test app
- swipe to home screen
- observe bubble bar is shown
- swipe notification shade down and away again
- observe bubble bar is hidden when shade is open, and shown when
closed
- expand bubble bar
- repeat swipe shade down and away, observe expanded bubble is hidden
while shade is open and bubble is expanded when shade is swiped away
Change-Id: Icc717ab250061f14f02a558eb9f7301fdc08c5c7
Bubble bar pointer arrow was being drawn outside of BubbleBarView
bounds.
This caused issues when alpha was applied to the BubbleBarView. With
alpha, BubbleBarView draw was clipped to its bounds and arrow was no
longer visible. This led to the arrow flickering during move animations.
Move animation updates alpha.
Move the pointer arrow inside the bounds of the bar view. Update the bar
height to include the arrow.
Update callers who rely on bubble bar content height to take into
account extra height for the arrow.
Bug: 313661121
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Test: move bubble bar left and right, observe arrow is visible
Change-Id: I05866b5c944361b2f10437c3641527ed3c594047
When it is not the initial bubble data, animate bubble bar location
change.
Bug: 313661121
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Test: manual, move expanded view from one side to the other, observe the
location change animates
Change-Id: I52117a31d02e7160ca1d3dc3e724bda2e38f6cbf
Adds bubble bar location to the update object that is sent by shell.
Allows repositioning the bubble bar if the location changes.
Bug: 313661121
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Test: manually sending the update to reposition, dragging coming soon
Change-Id: Id430a98116d860a7badcf607edc166c751e12cf8
Fix bubble bar collapse and expand animations when bubble bar is pinned
to the left.
When system language is set to an RTL language, bubble bar gets pinned
to the left edge of the screen.
Bubble bar should expand to the right and collapse to the left. Bubbles
in the bubble bar should be ordered from right to left. The most recent
bubble should be at the right in the bubble bar.
Known issue:
- when the most recent bubble is removed, the arrow animates to a new
position, but the background is not animated, resulting in arrow
getting detached from the container. Will be fixed by animating the
background.
Flag: LEGACY persist.wm.debug.bubble_bar DEVELOPMENT
Bug: 273310265
Test: with LTR language set as the system language
- expand bubble bar with 1 bubble
- expand bubble bar with multiple bubbles
- select second bubble, observe after collapse it is set as first
- dismiss a bubble from bubble bar by dragging
Test: with RTL language set as the system language
- expand bubble bar with 1 bubble
- expand bubble bar with multiple bubbles
- select second bubble, observe after collapse it is set as first
- dismiss a bubble from bubble bar by dragging
Change-Id: Ic46a5b1a6e45ad225ba509a61147cc6a8cdd0397
When the bubble bar becomes visible the space between icons in the
hotseat is now adjusted. This change only does it when the QSB is
above the icons, but this will be changed in the future to be based
on the amount of space between the hotseat and the edge of the screen.
When the hotseat is adjusted, the new width is smaller by the size of
2 icons. The icons are then translated to be evenly spaced within the
boundaries of the new width.
Since the adjustment is only applied when the QSB is above the icons,
it is resized accordingly to the new width.
All visual updates currently snap to the new position, but will be animated
in a follow up.
Demo: https://recall.googleplex.com/projects/3391fc5c-599d-4827-b6f8-d2deb160aa99/sessions/fad1a5c5-e9cf-4586-92e4-1e92df3b002e
Bug: 280494203
Test: Manual (on tangor)
- Set device to landscape
- Make the bubble bar visible by adding a bubble
- Rotate to portrait mode
- Observe that the hotseat is adjusted
- Rotate to landscape
- Observe that the hotseat adjustment is removed
- Rotate back to portrait
- Observe that the hotseat is adjusted again
- Dismiss the bubble to hide he bubble bar
- Observe the hotseat adjustment is removed
Change-Id: I5b02a60b6cb301ffa2507a6d825c748a782cca18
Launcher support for the user education logic described in ag/24587530.
Bug: 275077944
Test: TBD
Flag: WM_BUBBLE_BAR
Change-Id: I2b9a6ecde332de6305ad574c41d8322d8bb5d7ad
A single bubble and the bubble stack dismiss functionality is implemented using `BubbleDragController`. It attaches a touch listener to the corresponding views and handles gesture interactions.
* When the view is long clicked the dragging to dismiss interaction starts. It scales up the dragged view and presents the dismiss view in the bottom of the window.
* When the bubble or the bubble stack is dragged close to the dismiss target area, it gets pulled towards it and sticks to it. The `MagnetizedObject` and `MagneticTarget` classes are used for it.
* When the dragged view is released outside of the dismiss area, it moves back to the initial position with animation.
* When the dragged bubble is released inside of the dismiss area, it will dismiss the bubble with animation and remove it from the stack.
* When the dragged bubble bar stack is released inside the dismiss area, all the bubbles will get dismissed and the bubble bar will dissapear.
Bug: 271466616
Test: manual, TBD
Flag: WM_BUBBLE_BAR
Change-Id: I83393898be61ec522db92688ac2e111ef7d72fe6
The bounds of the bubble stash handle is calculated based on the bounds of
the bubble bar. The problem is that the bubble bar could be invisible, which
results in incorrect bounds set for the handle.
This change sets the bounds for the handle based on the width of the screen.
Fixes: 290992144
Test: Manual
- Remove bubbles
- Restart Launcher
- Open the bubble test app and double tap on a chat
- Observe that the handle animates in
Change-Id: Ida260014d59b88387de010891c18057f3b091e93
When the first bubble is added we set the visibility of the bubble bar
to VISIBLE if the stash controller is unstashed. The issue is that once
bubbles are gone we no longer update the stash state in the controller,
so it becomes stale and can't be used when the first bubble is added.
This change introduces a new method for handling the transition from
the state where both bar and handle are invisible into the state where
one of them becomes visible. We can't use the existing stashBubbleBar
and showBubbleBar methods because those transition from one to the other.
Using them when both are invisible results in one of them becoming visible
and then invisible again.
Fixes: 290992144
Fixes: 291074646
Test: Manual:
- Add bubble in the test app by double-tapping on a chat (non expanding notification)
- Observe that the handle becomes visible and the bar is invisible
- Dismiss bubble
- Add bubble in the test app by tapping on the button on the right (auto expanding)
- Observe that the bar becomes visible and expanded
Change-Id: I61334c67c255a6ed074fa8c834f4a5a1547539bf
ag/24024252 relied on the bubble bar being invisible to indicate that
the bar is empty. But that assumption was wrong. The bubble bar gets
hidden when the device is locked. The result is that unlocking the
device leaves the bubble bar stashed.
This change actually verifies whether the bubble bar is empty before
showing it.
Fixes: 290608658
Test: Manual:
- Have some bubbles in the bar
- Lock the device and unlock
- Observe that the bubble bar is unstashed
Change-Id: I4ca5c10e0cec57d3c6b4e056e06ebcf04aa1571a
* Added dismiss view to the taskbar
* Bubble drag to dismiss of:
* A single bubble when the bubble bar stack is expanded
* All bubbles when the bubble bar stack is colapsed
* Added dismiss related calls to WMShell in SystemUI through SystemUIProxy
Bug: 271466616
Test: manual, TBD
Flag: WM_BUBBLE_BAR
Change-Id: Ibb62a0b1ab9fafa8a3acf07450ce2132ed605adc
This will make it easier to note that a bubble has been "visited"
so that we can hide the update dot (coming in future CL).
Test: manual
Bug: 269670235
Change-Id: Ie2dbbc478198ece65c05927295d3c3031a7be82e
This allows WMShell to store the bubble bar coordinates so that it
draw the expanded view above it.
Fixes: 290099589
Test: Manual
- Add bubbles to the bubble bar
- Expand the bubble bar
- Observe that there is enough space between the bar and the
expanded view
Change-Id: Iff40b2b71369f33f343eb069e119f65723a6984e
After the bubble bar collapsing animation completes, and reordering
is finished, if the bubble overflow is selected, update the selected
bubble to be the first bubble. This ensures that the overflow
is not selected the next time the bubble bar is expanded.
This is done through a callback from the BubbleBarView to the
BubbleBarController with the key of the first bubble. Ideally the view
would just notify that the selected bubble needs to be updated, but
the controller doesn't hold ordering info.
Fixes: 289280431
Test: manual
- Add 2 bubbles to the bubble bar
- Expand the bubble bar. The first bubble A should be selected
- Select the second bubble B
- Select the overflow
- Tap on the overflow again to collapse the bubble bar
- Tap on the bubble bar to expand it
- Observe that bubble B is first and selected
Change-Id: I0f9c2d628cfaf3a80da55ff634284687425e949a
* Bubble bar typically follows the behavior of taskbar - if taskbar
is shown, the bubble bar is shown, if taskbar hides, bubble bar
hides.
* The bubble bar has 3 states: stashed, collapsed (unstashed but
the bubbles are not expanded), and expanded. When bubbles are
expanded, this means WMShell is rendering the bubble
expanded view. In this situation taskbar becomes collapsed.
Bug: 253318833
Test: manual - flag turned on - see go/bubble-bar-tests
Test: manual - flag turned off:
- launch an app, ensure taskbar is stashed
- unstash taskbar, drag down on taskbar, ensure it
becomes stashed
- be in an app, unstash taskbar, interact with the app,
ensure taskbar is stashed
- be in an app, unstash taskbar, select an app from it,
ensure taskbar is stashed & app is opened
Flag: WM_BUBBLE_BAR
Change-Id: I7b481d768182c8429160ab4a9b213b885a7d78bc
* Bubble bar typically follows the behavior of taskbar - if taskbar
is shown, the bubble bar is shown, if taskbar hides, bubble bar
hides.
* The bubble bar has 3 states: stashed, collapsed (unstashed but
the bubbles are not expanded), and expanded. When bubbles are
expanded, this means WMShell is rendering the bubble
expanded view. In this situation taskbar becomes collapsed.
Bug: 253318833
Test: manual, with other CLs, see go/bubble-bar-tests
Flag: WM_BUBBLE_BAR
Change-Id: Ic210c382e7482c259ae543a0dc083fe9305cbf5b
Adds a method to call into WMShell to set the listener and
indicate when a bubble is shown or when the expanded state
changes.
BubbleBarController sets or clears out the listener.
BubbleBarViewController calls SystemUiProxy when bubbles are shown
or when the expanded state changes.
Bug: 253318833
Test: manual, with other CLs, see go/bubble-bar-tests
Flag: WM_BUBBLE_BAR
Change-Id: I2364b9bbdea237fc268b0999d9c896585c194a86
Creates BubbleBarController which is responsible for registering
a listener to hear about bubble state changes and propagates those
changes to BubbleBarViewController.
Additionally, it loads the data and creates the individual BubbleViews
that are added to BubbleBarView.
Bug: 253318833
Test: manual, with other CLs, see go/bubble-bar-tests
Flag: WM_BUBBLE_BAR
Change-Id: I45b0d3a764cd14b2fc5d34aec2b81c7fecb541cf
Adds two controllers to manage and animate the stash / unstash state
of the bubble bar. Adds them to BubbleControllers.
Bug: 253318833
Test: manual, with other CLs, see go/bubble-bar-tests
Flag: WM_BUBBLE_BAR
Change-Id: I1a67da888384b1ae0fe3f79a25ea6a2c1b7eef87