Add new app close implementation.

- We remove the fling completely
- We set damping to 1 for x/y springs so there is no
  bounciness, and updated the stiffness and bounds to tighten
  up the path to the final location.
- During the animation, we translate all launcher content
  down
- When the x/y springs, and rect animator all finish,
  we use a spring to bounce the launcher content back up

- Added AppCloseConfig so that the entire animation can
  be defined in one location, with getter methods so that
  all the involved parties of the animation can access the
  current value.
- The animations are all defined linearly, and then
  interpolated over using a 3 point curve.

Building behind feature flag as we tune the values.

Bug: 173107751
Test: manual, visual
Change-Id: I83ad0fa2c4234cf30004240d43e191354595adc8
This commit is contained in:
Jon Miranda
2021-04-13 09:34:29 -04:00
parent 54d69965bf
commit c9ad2dd6c7
17 changed files with 723 additions and 80 deletions

View File

@@ -3323,6 +3323,18 @@ public class Workspace extends PagedView<WorkspacePageIndicator>
}
}
/**
* Set the given view's pivot point to match the workspace's, so that it scales together. Since
* both this view and workspace can move, transform the point manually instead of using
* dragLayer.getDescendantCoordRelativeToSelf and related methods.
*/
public void setPivotToScaleWithSelf(View sibling) {
sibling.setPivotY(getPivotY() + getTop()
- sibling.getTop() - sibling.getTranslationY());
sibling.setPivotX(getPivotX() + getLeft()
- sibling.getLeft() - sibling.getTranslationX());
}
@Override
public int getExpectedHeight() {
return getMeasuredHeight() <= 0 || !mIsLayoutValid