Commit Graph

26 Commits

Author SHA1 Message Date
Liran Binyamin 12f77ba713 Wire up flyout to new bubble animation
When a bubble is created or updated we now animate the flyout view
as part of the bar animation.

Note that the flyout is not clickable yet, and that we're not yet
handling bubble notifications interrupting each other.

Flag: com.android.wm.shell.enable_bubble_bar
Bug: 277815200
Test: atest BubbleBarViewAnimatorTest
Test: atest BubbleBarFlyoutControllerTest
Test: manual
       - verify flyout view is showing when creating bubble
          - on home
          - in app
          - when bubble bar is empty
Change-Id: I315e46c89a4d20aaaa22972f0d71290a63481d9d
2024-10-18 08:00:05 -04:00
Liran Binyamin 98ecad0352 Prepare for wiring bubble bar flyout
Implement BubbleBarFlyoutPositioner in BubbleBarViewController

Flag: com.android.wm.shell.enable_bubble_bar
Bug: 277815200
Test: builds successfully -- code is not wired up yet
Change-Id: Ib2d9b1f2f6e972f6ce949e10d50334a501c8c805
2024-10-08 16:40:31 -04:00
Ats Jenk aad71bc532 Set additional bubble translation during stash
Fixes bubbles stash translation not getting cleared up after stash
animation finishes.

Bubbles are clipped using an outline animator during the stash
animation. They need separate translation applied to keep them within
the bounds of the bubble bar that is also shrinking and moving.

Set the translation for the bubbles in the stash controller so we can
reset the translation after the animation has finished.

Bug: 365829293
Flag: com.android.wm.shell.enable_bubble_bar
Test: TransientBubbleStashControllerTest
Test: have bubbles in bubble bar, trigger a new auto expanding bubble,
  check translation for bubbles
Change-Id: Ic194afdb4d650fcd525355d8bae08dd651d1ea05
2024-09-11 16:29:22 -07:00
Ats Jenk 9ca662a7f7 Use a reveal animator for bubble icons (2/n)
Use a similar animation for bubble bar icons as we use for taskbar. When
stashing or unstashing, use a reveal animator to show the icons.
Previously we were scaling the icons to the desired size.
New reveal animator matches what is used for taskbar.

Bug: 345488489
Test: TransientBubbleStashControllerTest
Test: stash and unstash bubble bar in app by swiping up from taskbar
Test: expand and collapse bubble bar in app by swiping up on bar
Test: expand and collapse bubble bar on home screen by tapping on it

Flag: com.android.wm.shell.enable_bubble_bar
Change-Id: I24b0c64673d6becfa2ed68993bb95fe78e105670
2024-09-09 15:23:51 -07:00
Luca Zuccarini d75eacf30d 3/3 Move some Shell utils to the Shared package.
Bug: 322791067
Flag: EXEMPT move only
Test: NA
Change-Id: Iabc42e4c1d9c13667e9d91be5789cf295f3332e1
2024-09-02 09:23:34 +00:00
Mady Mellor 3808adc58c Don't show the app badge on app bubbles
Flag: com.android.wm.shell.enable_bubble_anything
Test: manual - add an app bubble to bubble bar, observe it's not
               badged (with sysui CL)
Bug: 342245211
Change-Id: I768fa9bb478eeaba587b90d478f32f8c2ee88be1
2024-08-30 09:52:45 -07:00
Luca Zuccarini 0ad76ac07d Merge "Move some Shell utils to the Shared package." into main 2024-08-16 16:32:37 +00:00
Mady Mellor 8c629fd8b5 Support optional bubble overflow in bubble bar
This is similar to the animations that add / remove a bubble at the
same time -- the overflow is generally added when a bubble is removed.
The overflow is generally removed when a bubble is added (i.e. user
promotes a bubble out of the overflow).

There are a couple of additional cases:
- when bubbles are first added to the bar -- if there were saved
  bubbles in the overflow, the view should be added
- an app could cancel its bubbles / remove its shortcuts and not have
  any in the stack but could have some in the overflow & it could
  become empty without an addition.

Flag: com.android.wm.shell.enable_optional_bubble_overflow
Flag: com.android.wm.shell.enable_bubble_bar
Test: manual - add bubbles to the bubble bar for first time
             => observe there is no overflow
             - dismiss a bubble
             => observe the overflow is added, tap on it, tap on the
                bubble in it
             => observe that bubble is added & the overflow disappears
             - dismiss all the bubbles
             - add a bubble
             => observe the overflow is there & has the previously
                dismissed bubbles
             - cancel all the bubbles that are in the overflow via
               adb
             => observe the overflow is remvoed
Bug: 334175587
Change-Id: I2b6e855e65520b4b2b1fde7757d46f00a468b4a6
2024-08-05 12:25:33 -07:00
Luca Zuccarini 3cdabb8864 Move some Shell utils to the Shared package.
Bug: 322791067
Flag: EXEMPT move only
Test: NA
Change-Id: I8a827a200340fd1ee0168ed16c4f5223150a1795
2024-07-31 14:10:54 +00:00
Mykola Podolian 0211d2e168 Merge "Change shadow drawing for bubble bar icons." into main 2024-07-30 17:16:51 +00:00
mpodolian c10de368a2 Change shadow drawing for bubble bar icons.
Removed an outline provider for the BubbleView, so framework shadows are
not drawn. Use BubbleBarBubbleIconsFactory to generate icon with the
shadow so it looks consistent with the taskbar and the hotseat bar.

Fixes: 345490679
Flag: com.android.wm.shell.enable_bubble_bar
Test: manual, screenshot before fix:
https://screenshot.googleplex.com/86ZhQENANboZK87
screenshot after fix:
https://screenshot.googleplex.com/3hNboaSaS9tZ9DS

Change-Id: I9ae3624e652e4f609b29ae0f57a47d4a6d01e94b
2024-07-29 16:25:54 -07:00
Liran Binyamin 612263104b Animate the bubble badge
The bubble badge now scales together with the expand and collapse
animation of the bubble bar. The badge for the selected bubble is
always kept at full scale.

Flag: com.android.wm.shell.enable_bubble_bar
Fixes: 349826874
Test: manual
       - create some bubbles in the bubble bar
       - expand and collapse the bar
       - observe badge icons scale accordingly
Change-Id: I04e9174f4a921e404cb3162337f594c16478b16c
2024-07-29 08:06:55 -04:00
mpodolian 6ba541642e Improvement for the Bubble Bar Bubbles' Shadows
The issue was caused by the alpha animation applied to the bubble bar.
Added code to check if the alpha applied to the bubble bar is less than
1 and instruct child bubble views not to provide a shadow outline in
such cases. While this is not a full fix, but rather an improvement,
b/345490679 should introduce a proper fix.

Bug: 345484712
Test: visual - go to any application and stash/unstash bubble bar
Flag: com.android.wm.shell.enable_bubble_bar
Change-Id: Icb6bdb009f4d5998ec1638f97de89f7a4c9feccf
2024-07-25 05:31:55 +01:00
Ats Jenk 85d4b8bb72 Create a11y menu for a bubble in bubble bar
A11y that supports the following actions:
- collapse
- dismiss
- move bar to the left or right (depending on current location)

Bug: 347028716
Test: select bubble in expanded bubble bar, open action menu
Test: use action menu to:
  - collapse bubble bar
  - dismiss a bubble, ensure only selected bubble is dismissed
  - move bubble bar to other side
Flag: com.android.wm.shell.enable_bubble_bar
Change-Id: I70d90877e045abadb1fca4665ce315476d33c713
2024-07-22 15:17:16 -07:00
Liran Binyamin 5013028596 Update bubble notification dot drawing
The notification dot drawing state depends on changes in the bubble
bar, so the bubble bar now directly requests updates to the dot at
specific states.

Flag: com.android.wm.shell.enable_bubble_bar
Fixes: 351904597
Fixes: 350782375
Test: atest BubbleViewTest
Test: manual basically just hammering on it trying to break it
       1. Dot appears for new bubble in all states of the bar
       2. Expand bubble bar
          - Dot is removed for selected and shows for others
            that have a dot
       3. After removing bubble while expanded
          - Dot is removed from newly selected bubble
       4. Collapse bubble bar
          - Dot is hidden for all bubbles
       5. Dot removed after tapping on a bubble when expanded

Change-Id: I4a940d38a8c77bddaf058b7ef882bab06886bcf4
2024-07-18 10:38:29 -04:00
mpodolian a3921ddb67 Shadow for bubble icons fixed.
The bubble's outline was hardcoded with a fixed size. This caused a
shadow to be drawn using the hardcoded outline size, regardless of the
actual bubble view size. The BubbleView logic has been updated to use
the actual bubble size for the outline. The guarding flag has been
removed.

Bug: 340445019
Flag: com.android.wm.shell.enable_bubble_bar
Test: http://recall/-/gx8ASgewUeUS3QYohfrd1J/hqFtAZJnX0tCRONoFpSK3i
Change-Id: Iaa2c2d0bfeee2af9840acbcf11daaf8be2e0b7af
2024-07-10 16:36:22 +00:00
Liran Binyamin 78cf7c1745 Animate the dot with the bubble bar
The previous behavior relied on a BEHIND_STACK suppression flag to
determine whether the dot should be drawn or not. setBehindStack was
called as part of updating bubble layout properties in BubbleBarView,
which happens at each animation frame of the bubble bar collapsing
and expanding.

Instead of using the suppression flag, we now directly set the dot
scale based on the progress of the collapse and expand animation.

This change also sets the badge visibility directly from BubbleBarView
and cleans up the BEHIND_STACK suppression flag.

Flag: com.android.wm.shell.enable_bubble_bar
Fixes: 349822532
Test: manual
       - have some bubbles and expand bar
       - trigger a new bubble X
       - observe bubble added with notification dot
       - tap on the selected bubble to collapse
       - observe the notification dot animates for bubble X
       - expand the bar
       - observe notification dot animates for bubble X
       - tap on bubble X
       - observe notification dot animates out
       - tap on a different bubble
       - observe notification dot does not reappear
Change-Id: I6efe0dfa8b4f73064cee8b45556ff0928f6f7c08
2024-06-27 12:55:04 -04:00
Ats Jenk cd4c9d153d Add content description to bubble bar and bubbles
Set content description on the bubble bar when it is collapsed. Only
allow focus on the bar itself. In collapsed mode, bubbles in the bar
can't be focused.
Content description for the bar matches what we have in floating mode.
We include the text for the first bubble and then how many bubbles are
there more.

Set content description on bubbles in bubble bar. When bubble bar is
expanded, only the bubbles are focusable.
Bubble content description matches the floating bubbles content
description. Includes the notification title and app name.

Bug: 344670947
Flag: com.android.wm.shell.enable_bubble_bar
Test: enable talkback, focus on bubble bar when it is collapsed, check
  that only bubble bar receives focus
Test: enable talkback and expand bubble bar, check that only the bubbles
  receive focus
Change-Id: Id931f0360b9ebadd01dd16b05b75546fcc4df803
2024-06-05 10:13:22 -07:00
Ats Jenk af5a393f88 Fix bubble position when dragged to dismiss view
When moving a bubble to dismiss view, use the drag translation x methods
to set the translation x values.
When bubble is moved to the dismiss view, the container will animate
back to the initial position. And we need to account for this while
bubble is in the dismiss view.

Bug: 339659499
Flag: com.android.wm.shell.enable_bubble_bar
Test: manual, drag bubble to other side and then to dismiss view,
  observe that bar moves back to original side and bubble is at the
  center of the dismiss view
Change-Id: I4c6e1be2dcd1180d985ceafccfc0f18466549347
2024-05-31 14:21:40 -07:00
Ats Jenk 5a03549797 Use translation to move bubble bar during bubble drag
Revert logic to set translation on each BubbleView and background.
Background translation was set with bounds offset and BubbleView was
using setTranslationX(). This made it hard to synchronise background and
child view translations. And led to flickers.

Applying translation on the BubbleBarView itself, but applying the
reverse of the translation to the dragged BubbleView. This ensures that
the dragged bubble position is not affected by the parent translation.

Introducing a new property for BubbleView that is used to apply
translation during drag. It takes into account the offset of the
BubbleBarView.

Bug: 330585402
Flag: ACONFIG com.android.wm.shell.enable_bubble_bar DEVELOPMENT
Test: drag bubble to other side and release before the bubble bar
  animation finishes, observe no flickers
Test: drag expanded view to other side and release before the bar
  animation finishes, observe no flickers
Change-Id: I1712ed6ac26831f10466dbaf0378f8aabb29629d
2024-05-06 17:39:29 -07:00
Ats Jenk 363a841a04 Drag bubble in bubble bar to other side
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
2024-05-01 14:53:14 -07:00
Liran Binyamin 074a3a66b0 Initial animation of new bubble bar bubble
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
2024-03-28 11:30:56 -04:00
Liran Binyamin 78f444bdad Adds content description to the overflow bubble.
Flag: LEGACY persist.wm.debug.bubble_bar DISABLED
Bug: 273994695
Test: SystemUIMicrobenchmark:android.platform.test.scenario.sysui.bubble.BubbleBarTest

Change-Id: Ie3fe451c69a39560aa91a6dfd4d615f172cf3299
2023-10-19 14:00:41 -04:00
Mady Mellor c299ad645a Show / hide the "update" dot on bubbles in bubble bar
Updates BubbleView to include logic to render the update dot on a
bubble. This only shows for BubbleBarBubbles, not the overflow.

We only show the dot (and the badge) when:
- the bubble has new content / appropriate flags set
- AND the bubbles are expanded
  OR on the first bubble when bubbles are collapsed
- AND when the flyout is not animating (this bit doesn't exist yet)

If a bubble has a dot and is opened, the dot will animate away.
To do this, we update the flags set on a bubble.

The flag needs to be set on WMShell side as well as Launcher side.
When a bubble is shown by WMShell, it automatically updates the flag.
This CL adds code to update the flag on Launcher side when we call
into WMShell to show the bubble.

Test: manual
Bug: 269670235
Change-Id: I32f652effa9a73c567981aa5a2a5864e9c3c0c66
2023-07-11 15:09:29 -07:00
Liran Binyamin f78d55ba76 Adds an overflow bubble to the bubble bar.
Bug: 271468319
Test: Tested on a physical device
Change-Id: Ib4ad62779173ab8010e5e5d25bf5415fee1b1d41
2023-05-17 16:37:48 +00:00
Mady Mellor 55913d53c6 Creates BubbleBarView & BubbleBarViewController & friends
BubbleBarView shows BubbleViews in a bar similar to transient
taskbar. BubbleBarView can be collapsed (bubbles in a stack) or
expanded (bubbles all visible). When expanded, WMShell will be
notified to show the appropriate expanded bubble view (not part of
this CL).

Also creates BubbleControllers which contains BubbleBarViewController
and will eventually contain other controllers related to stashing
for the bubble bar.

Bug: 253318833
Test: manual, with other CLs, see go/bubble-bar-tests
Flag: WM_BUBBLE_BAR
Change-Id: I990ab3da6614db90ffff8c40281dc7f16b3957f6
2023-04-17 16:36:28 -07:00