Merge "Fix foreground position during widget home animation" into sc-dev

This commit is contained in:
TreeHugger Robot 2021-06-15 17:59:48 +00:00 committed by Android (Google) Code Review
commit 3e366d6529
2 changed files with 27 additions and 4 deletions

View File

@ -190,6 +190,12 @@ public class LauncherSwipeHandlerV2 extends
return new FloatingViewHomeAnimationFactory(floatingWidgetView) {
@Override
@Nullable
protected View getViewIgnoredInWorkspaceRevealAnimation() {
return hostView;
}
@Override
public RectF getWindowTargetRect() {
super.getWindowTargetRect();
@ -387,6 +393,16 @@ public class LauncherSwipeHandlerV2 extends
}
private class LauncherHomeAnimationFactory extends HomeAnimationFactory {
/**
* Returns a view which should be excluded from the Workspace animation, or null if there
* is no view to exclude.
*/
@Nullable
protected View getViewIgnoredInWorkspaceRevealAnimation() {
return null;
}
@NonNull
@Override
public AnimatorPlaybackController createActivityAnimationToHome() {
@ -400,7 +416,8 @@ public class LauncherSwipeHandlerV2 extends
@Override
public void playAtomicAnimation(float velocity) {
if (!PROTOTYPE_APP_CLOSE.get()) {
new StaggeredWorkspaceAnim(mActivity, velocity, true /* animateOverviewScrim */)
new StaggeredWorkspaceAnim(mActivity, velocity, true /* animateOverviewScrim */,
getViewIgnoredInWorkspaceRevealAnimation())
.start();
} else if (shouldPlayAtomicWorkspaceReveal()) {
new WorkspaceRevealAnim(mActivity, true).start();

View File

@ -32,6 +32,8 @@ import android.animation.ValueAnimator;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.Nullable;
import com.android.launcher3.BaseQuickstepLauncher;
import com.android.launcher3.CellLayout;
import com.android.launcher3.DeviceProfile;
@ -68,15 +70,18 @@ public class StaggeredWorkspaceAnim {
private final float mSpringTransY;
private final AnimatorSet mAnimators = new AnimatorSet();
private final @Nullable View mIgnoredView;
public StaggeredWorkspaceAnim(Launcher launcher, float velocity, boolean animateOverviewScrim) {
this(launcher, velocity, animateOverviewScrim, true);
public StaggeredWorkspaceAnim(Launcher launcher, float velocity, boolean animateOverviewScrim,
@Nullable View ignoredView) {
this(launcher, velocity, animateOverviewScrim, ignoredView, true);
}
public StaggeredWorkspaceAnim(Launcher launcher, float velocity, boolean animateOverviewScrim,
boolean staggerWorkspace) {
@Nullable View ignoredView, boolean staggerWorkspace) {
prepareToAnimate(launcher, animateOverviewScrim);
mIgnoredView = ignoredView;
mVelocity = velocity;
// Scale the translationY based on the initial velocity to better sync the workspace items
@ -224,6 +229,7 @@ public class StaggeredWorkspaceAnim {
* @param totalRows Total number of rows.
*/
private void addStaggeredAnimationForView(View v, int row, int totalRows) {
if (mIgnoredView != null && mIgnoredView == v) return;
// Invert the rows, because we stagger starting from the bottom of the screen.
int invertedRow = totalRows - row;
// Add 1 to the inverted row so that the bottom most row has a start delay.