Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 92c93bdd authored by Nick Chameyev's avatar Nick Chameyev Committed by Android (Google) Code Review
Browse files

Merge "[Unfold transition] Hide invisible workspaces during animation" into tm-qpr-dev

parents 1b27affb 47f3322b
Loading
Loading
Loading
Loading
+24 −12
Original line number Diff line number Diff line
@@ -100,22 +100,34 @@ public abstract class BaseUnfoldMoveFromCenterAnimator implements TransitionProg
        mMoveFromCenterAnimation.registerViewForAnimation(view);
    }

    protected void disableClipping(ViewGroup view) {
    /**
     * Sets clipToPadding for the view which then could be restored to the original value
     * using {@link BaseUnfoldMoveFromCenterAnimator#restoreClippings} method call
     * @param view view to set the property
     * @param clipToPadding value of the property
     */
    protected void setClipToPadding(ViewGroup view, boolean clipToPadding) {
        mOriginalClipToPadding.put(view, view.getClipToPadding());
        mOriginalClipChildren.put(view, view.getClipChildren());
        view.setClipToPadding(false);
        view.setClipChildren(false);
        view.setClipToPadding(clipToPadding);
    }

    protected void restoreClipping(ViewGroup view) {
        final Boolean originalClipToPadding = mOriginalClipToPadding.get(view);
        if (originalClipToPadding != null) {
            view.setClipToPadding(originalClipToPadding);
        }
        final Boolean originalClipChildren = mOriginalClipChildren.get(view);
        if (originalClipChildren != null) {
            view.setClipChildren(originalClipChildren);
    /**
     * Sets clipChildren for the view which then could be restored to the original value
     * using {@link BaseUnfoldMoveFromCenterAnimator#restoreClippings} method call
     * @param view view to set the property
     * @param clipChildren value of the property
     */
    protected void setClipChildren(ViewGroup view, boolean clipChildren) {
        mOriginalClipChildren.put(view, view.getClipChildren());
        view.setClipChildren(clipChildren);
    }

    /**
     * Restores original clip properties after their modifications
     */
    protected void restoreClippings() {
        mOriginalClipToPadding.forEach(ViewGroup::setClipToPadding);
        mOriginalClipChildren.forEach(ViewGroup::setClipChildren);
    }

    private class UnfoldMoveFromCenterRotationListener implements
+3 −2
Original line number Diff line number Diff line
@@ -41,7 +41,8 @@ public class UnfoldMoveFromCenterHotseatAnimator extends BaseUnfoldMoveFromCente
        Hotseat hotseat = mLauncher.getHotseat();

        ViewGroup hotseatIcons = hotseat.getShortcutsAndWidgets();
        disableClipping(hotseat);
        setClipChildren(hotseat, false);
        setClipToPadding(hotseat, false);

        for (int i = 0; i < hotseatIcons.getChildCount(); i++) {
            View child = hotseatIcons.getChildAt(i);
@@ -51,7 +52,7 @@ public class UnfoldMoveFromCenterHotseatAnimator extends BaseUnfoldMoveFromCente

    @Override
    public void onTransitionFinished() {
        restoreClipping(mLauncher.getHotseat());
        restoreClippings();
        super.onTransitionFinished();
    }
}
+5 −4
Original line number Diff line number Diff line
@@ -47,7 +47,8 @@ public class UnfoldMoveFromCenterWorkspaceAnimator extends BaseUnfoldMoveFromCen
                    final CellLayout cellLayout = (CellLayout) page;
                    ShortcutAndWidgetContainer itemsContainer = cellLayout
                            .getShortcutsAndWidgets();
                    disableClipping(cellLayout);
                    setClipChildren(cellLayout, false);
                    setClipToPadding(cellLayout, false);

                    for (int i = 0; i < itemsContainer.getChildCount(); i++) {
                        View child = itemsContainer.getChildAt(i);
@@ -55,13 +56,13 @@ public class UnfoldMoveFromCenterWorkspaceAnimator extends BaseUnfoldMoveFromCen
                    }
                });

        disableClipping(workspace);
        setClipChildren(workspace, false);
        setClipToPadding(workspace, true);
    }

    @Override
    public void onTransitionFinished() {
        restoreClipping(mLauncher.getWorkspace());
        mLauncher.getWorkspace().forEachVisiblePage(page -> restoreClipping((CellLayout) page));
        restoreClippings();
        super.onTransitionFinished();
    }
}