Creating a separate view for FastScrollBar and moving all the relavant logic in
the view.
For protrait, the touch handling is delegated by the recycler view just like before.
For landscape, the dcrollbar does not overlay with recyclerView and handles the touch
itself
Bug: 37015359
Change-Id: Ie1981326457ba739bdf0ac8063db1065f395f133
SpringAnimationHandler is only responsible for motion tracking and
updating the list of springs it is handling.
Spring initialization and updates are handled by the AnimationFactory
interface.
This is done in preparation for future CLs where SpringAnimationHandler
will be used in more cases.
Bug: 38349031
Change-Id: I5ebce710cc05e4e88b708ceea5d2cfefbd0eb3d0
ie. When scrolling up from the bottom, the animation will immediately
start since the last visible item condition is true — and by the time
it reaches the top the spring is done moving.
Bug: 38349031
Change-Id: I344deef47c50b33405345dd3a137ccdb12aeae02
drawn below the top padding.
Also adding callback for getting the all-apps vertical pull range
so that it can be controlled by SearchUiManager
Bug: 37616877
Change-Id: Ib4642073f3e92f6676caede3bddd652fda89c86f
This will allow derivative projects to easily change the search behavior
by simply overriding the xml file
Bug: 37616877
Change-Id: Ib8d6a2dab06819a52611e9a3d97c70c5a49bbf97
Instead of notifyItemChanged(), we iterate over children of the
RecyclerView itself and call applyBadgeState() on affected icons.
This is the same logic we do for the workspace.
Issues this fixes:
- Icons flash when dismissing notifications
- Badge reappears on the icon while popup is open
Change-Id: I5c69d5c6bd47630c0241666b5f7f6f7ca97118f9
on clicking promise app icon in All Apps.
Only the progress will be changed with animation on progress update,
no relayout is performed. If the icon is newly bound, the progress
will not be animated.
Bug: 23952570
Change-Id: I98d3f945f08a2abadf53f20e6007c15e56d5d410
This is the basis for app discovery integration while searching in all apps.
This does NOT include binding to the actual service and retrieving results,
but instead provides all the UI to show suggested instant apps and apps
from a store with star rating and pricing.
Change-Id: I1605b52848491acee4ac1d15c0112e6a768363f6
> Replacing some colors with theme attributes
> Simplifying styles definition by removing unnecessary inheritance and inlining some definitions
Change-Id: Ifa167515cae6a7fd3720f1a52ff9ce11abb4495f
PackageUserKey is only meant to be used for items that support
notifications, so when trying to update it for an item that
doesn't, we don't use it to check if the item has notifications.
This fixes a crash that happens when trying to update notifications
for a legacy shortcut, as such a shortcut doesn't have a component
on its intent, which we were trying to use to populate PackageUserKey.
Bug: 34842278
Change-Id: I8c69ccebbf9d93505d5b29ecd25d76c65610ddc4
- NotificationListener extends NotificationListenerService, and is
added to the manifest.
- Added PopupDataProvider, which contains logic for storing and
interacting with data that goes into the long-press popup menu
(shortcuts and notifications). A follow-up CL will rename
DeepShortcutsContainer to a generic PopupContainerWithArrow.
- If Launcher has notification access, NotificationListener will
get callbacks when notifications are posted and removed; upon
receiving these callbacks, NotificationListener passes them to
PopupDataProvider via a NotificationsChangedListener interface.
- Upon receiving the changed notifications, PopupDataProvider maps
them to the corresponding package/user and tells launcher to
update relevant icons on the workspace and all apps.
This is guarded by FeatureFlags.BADGE_ICONS.
Bug: 32410600
Change-Id: I59aeb31a7f92399c9c4b831ab551e51e13f44f5c
> Moving all fling related logic to FlingToDeleteHelper from DragController
> Removing fling related methods from DragSource and DropTarget
> Moving fling animation logic from DeleteDropTarget to FlingAnimation
> Simplifying DropTargetBar to directly look for all valid drop targets.
This makes it easier to add new DropTarget in xml.
Change-Id: I7214d2d30c907ab93c80d92d9f9be6dda2d63354
Previously we checked for deep shortcuts when closing all apps by swiping
down. Now we check any AbstractFloatingView, and when swiping up.
Bug: 33542711
Change-Id: I860eb55c69567a92cd626e966bf881b7d1bffc6e
In portrait multi-window mode, hotseat cell height is
too small. Found that there was already a resource for
all_apps_search_bar_height so using that instead.
Change-Id: I56647eb55a7808e93bdcbb3334b1513f6ac23d7c
In a previous refactor, I mistakenly used hotseatBarHeightPx instead of
hotseatCellHeightPx.
Bug: 32176631
Change-Id: I53ef8fa29a6980dcb33bb979d1bed98317c8ade2
Drawable contain a reference to the view which is used to invalidate the view.
If the same drawable is used with two views, only once view will get invalidated.
Bug: 32575647
Change-Id: Ia22310a6bda55ce0a591712761ec8ab1cdbaccdf
> Removing new object creation (during draw and touch handling)
> Simplifying matrix operation to call invert only once at the end
Change-Id: Iffadd6e9d84997baa36719ed688a7c3c1027e839
* when user tries to add item to full hot seat from workspace.
* when user tries to add item to full home screen from workspace.
* refactored so that Workspace handles displaying error messages.
Bug: 15574422
Change-Id: Ibc98c7f45bc0c646dc4636660fba62be9db22ac0
This was an exploration for an alternative UI in all apps, where we
show section headers before every section. This was never released.
Change-Id: I2d36f1d078cc9a6f3ba6f0ec9655412182c9b016
> Using a separate view for drawing the popup. This allows us to use elevation
property instead of drawing the shadow as bitmap.
> During the thumb animation, invalidating the full track width, instead of
invalidating the track and thumb separately.
> The thumb path is calculated at 0,0 and drawn using canvas.translate().
This avoids recalculating the path on every scroll.
Change-Id: I48741e5b4432df0d939016db284d7aaf52cc2aa6
> Creating a base view for floating panels with some common methods
> Moving the getOpen method to individual classes
> Moving the folder icon animation logic to folder icon
> Moving all the logic related for opening folder to Folder class
Change-Id: I898dfb6870b857cb921d2729b89618bc43ff2e88
- First of all, deferred drag has been renamed to pre-drag
to avoid confusion with the existing deferred end drag.
- For normal drags, the cycle is still startDrag -->
onDragStart --> onDrop --> onDropComplete --> onDragEnd.
- Pre-drags have two additional callbacks: onPreDragStart
and onPreDragEnd. onPreDragStart is called between
startDrag and onDragStart, and onPreDragEnd is called
at the same time as onDragStart or onDragEnd.
- If the pre-drag has not transitioned to a full drag before
onDragEnd, onDragStart and onDropComplete are skipped
(onDrop is still called to allow the DragView to animate).
Change-Id: Icd7a8f75d5fcc159f9a52758c22ab6eae3edb9e2
- Instead of creating our own drag view within the container, and
handling logic to determine when to start a real drag, we start
the drag immediately and just defer onDragStart().
- To determine when the deferred drag should start, we add a
DeferDragCondition to DragOptions. The default DeferDragCondition
never defers a drag, but is overridden for apps with shortcuts
to defer until the icon is dragged a given distance.
- Because the drag is handled in DragController, including checking
when to start the deferred drag, DeepShortcutsContainer no longer
needs to handle touch events and ShortcutsContainerListener has
been removed.
This change has several immediate benefits:
- The code is much cleaner, because it allows touch handling to be
done by the DragController through the normal drag flow, without
recreating logic in ShortcutsContainerListener/DeepShortcutContainer.
- The janky second haptic feedback has been removed (now it vibrates
when you long press, like everywhere else, but not again when the
shortcuts close after dragging a distance).
- Drops are animated, instead of just popping the icon back into place.
Bug: 30769920
Bug: 30465972
Bug: 31533078
Change-Id: I679b412b72fbf6c3895d76963311eb5010c8e8db
Now both AllAppsContainerView and WidgetsContainerView will be
dismissed when the background is clicked.
Bug: 27130340
Change-Id: Ie8446e4b8908742ddc8a227fe71ea56ec11c2457
In ag/1460444 we used TransformingTouchDelegate to extend the
touch target for the widgets list. Now both WidgetsContainerView
and AllAppsContainerView will use the same TransformingTouchDelegate logic
to extend the touch target for their respective lists.
This is part of a larger refactor where in a follow up CL, we will
handle the logic for dismissing WCV and AACV when touching outside
of its content in BaseContainerView. (currently broken in WCV).
Change-Id: I7fddb456bba34a6533f8824da0481d308a8b715e
1) Adding DragOptions to easily extend drap functionality
2) Changing onDragStarted signature to send more information
3) Updating states for dropTargetButton based on drag event directly
4) Removing folder item based on onDragStarted and not startDrag
Change-Id: I65b684e092ddc081d086bfe2c8c1973ed170eaeb