[DO NOT MERGE] Fix some visual jumps when swiping home
All caused by running the transform progress from 0 to 1 instead of starting at whatever the progress was before ending the gesture, e.g.: - When swiping to home without animating into an icon, the corner radius was set back to the window corner radius. - Before this change, the clip didn't update throughout the animation, making the window slightly bigger than the floating icon view; after this change, the clip jumped to show the insets again before clipping back down during the home animation. Partial backport of ag/Ie48f4b665a5bf3cbef76bdf7f043febe99fb84a0 Bug: 150680980 Change-Id: Ida65097f0ef7d2e11d48b84ecdd353ef89078015
This commit is contained in:
@@ -386,6 +386,10 @@ public abstract class BaseSwipeUpHandler<T extends BaseDraggingActivity, Q exten
|
||||
// rounding at the end of the animation.
|
||||
float startRadius = mClipAnimationHelper.getCurrentCornerRadius();
|
||||
float endRadius = startRect.width() / 6f;
|
||||
|
||||
float startTransformProgress = mTransformParams.getProgress();
|
||||
float endTransformProgress = 1;
|
||||
|
||||
// We want the window alpha to be 0 once this threshold is met, so that the
|
||||
// FolderIconView can be seen morphing into the icon shape.
|
||||
final float windowAlphaThreshold = isFloatingIconView ? 1f - SHAPE_PROGRESS_DURATION : 1f;
|
||||
@@ -409,7 +413,8 @@ public abstract class BaseSwipeUpHandler<T extends BaseDraggingActivity, Q exten
|
||||
public void onUpdate(RectF currentRect, float progress) {
|
||||
homeAnim.setPlayFraction(progress);
|
||||
|
||||
mTransformParams.setProgress(progress)
|
||||
mTransformParams.setProgress(
|
||||
Utilities.mapRange(progress, startTransformProgress, endTransformProgress))
|
||||
.setCurrentRectAndTargetAlpha(currentRect, getWindowAlpha(progress));
|
||||
if (isFloatingIconView) {
|
||||
mTransformParams.setCornerRadius(endRadius * progress + startRadius
|
||||
|
||||
@@ -402,6 +402,10 @@ public class ClipAnimationHelper {
|
||||
return this;
|
||||
}
|
||||
|
||||
public float getProgress() {
|
||||
return progress;
|
||||
}
|
||||
|
||||
public TransformParams setCornerRadius(float cornerRadius) {
|
||||
this.cornerRadius = cornerRadius;
|
||||
return this;
|
||||
|
||||
Reference in New Issue
Block a user