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

This commit is contained in:
Nick Chameyev
2023-02-22 11:20:16 +00:00
committed by Android (Google) Code Review
3 changed files with 33 additions and 19 deletions

View File

@@ -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

View File

@@ -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();
}
}

View File

@@ -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();
}
}