Revert "Revert "Correct ⭕ ⛶ 🕳️ 👊👊👊👊👊👊""
This reverts commit 33226ec0e183b1162d18c0e02543db0fa31bcf45.
Reason for revert: Most test devices have the platform changes
Change-Id: Ic3f1c144537d127c690c7949f7144dedf0611c49
diff --git a/quickstep/src/com/android/quickstep/ActivityControlHelper.java b/quickstep/src/com/android/quickstep/ActivityControlHelper.java
index d78ba9c..16f5fa1 100644
--- a/quickstep/src/com/android/quickstep/ActivityControlHelper.java
+++ b/quickstep/src/com/android/quickstep/ActivityControlHelper.java
@@ -553,7 +553,8 @@
public void finish() { }
@Override
- public void update(boolean shouldFinish, boolean isLongSwipe, RectF currentRect) { }
+ public void update(boolean shouldFinish, boolean isLongSwipe, RectF currentRect,
+ float cornerRadius) { }
};
}
@@ -631,7 +632,8 @@
void finish();
- void update(boolean shouldFinish, boolean isLongSwipe, RectF currentRect);
+ void update(boolean shouldFinish, boolean isLongSwipe, RectF currentRect,
+ float cornerRadius);
}
interface ActivityInitListener {
diff --git a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
index f4b2feb..78a2055 100644
--- a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
+++ b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
@@ -601,7 +601,8 @@
private void updateFinalShiftUi() {
if (mRecentsAnimationWrapper.getController() != null && mLayoutListener != null) {
mLayoutListener.update(mCurrentShift.value > 1, mUiLongSwipeMode,
- mClipAnimationHelper.getCurrentRectWithInsets());
+ mClipAnimationHelper.getCurrentRectWithInsets(),
+ mClipAnimationHelper.getCurrentCornerRadius());
}
final boolean passed = mCurrentShift.value >= MIN_PROGRESS_FOR_OVERVIEW;
diff --git a/quickstep/src/com/android/quickstep/util/ClipAnimationHelper.java b/quickstep/src/com/android/quickstep/util/ClipAnimationHelper.java
index f254244..8c9cead 100644
--- a/quickstep/src/com/android/quickstep/util/ClipAnimationHelper.java
+++ b/quickstep/src/com/android/quickstep/util/ClipAnimationHelper.java
@@ -88,6 +88,8 @@
// Corner radius of windows when they're in overview mode.
private final float mTaskCornerRadius;
+ // Corner radius currently applied to transformed window.
+ private float mCurrentCornerRadius;
private float mTargetScale = 1f;
private float mOffsetScale = 1f;
private Interpolator mInterpolator = LINEAR;
@@ -179,14 +181,15 @@
float alpha = 1f;
int layer;
float cornerRadius = 0f;
+ float scale = currentRect.width() / crop.width();
if (app.mode == targetSet.targetMode) {
if (app.activityType != RemoteAnimationTargetCompat.ACTIVITY_TYPE_HOME) {
mTmpMatrix.setRectToRect(mSourceRect, currentRect, ScaleToFit.FILL);
mTmpMatrix.postTranslate(app.position.x, app.position.y);
mClipRectF.roundOut(crop);
- float scale = crop.width() / currentRect.width();
cornerRadius = Utilities.mapRange(progress, mWindowCornerRadius,
- mTaskCornerRadius * scale);
+ mTaskCornerRadius);
+ mCurrentCornerRadius = cornerRadius;
}
if (app.isNotInRecents
@@ -200,7 +203,11 @@
crop = null;
layer = Integer.MAX_VALUE;
}
- params[i] = new SurfaceParams(app.leash, alpha, mTmpMatrix, crop, layer, cornerRadius);
+
+ // Since radius is in Surface space, but we draw the rounded corners in screen space, we
+ // have to undo the scale.
+ params[i] = new SurfaceParams(app.leash, alpha, mTmpMatrix, crop, layer,
+ cornerRadius / scale);
}
applyParams(syncTransactionApplier, params);
return currentRect;
@@ -339,4 +346,8 @@
public RectF getSourceRect() {
return mSourceRect;
}
+
+ public float getCurrentCornerRadius() {
+ return mCurrentCornerRadius;
+ }
}
diff --git a/quickstep/src/com/android/quickstep/views/LauncherLayoutListener.java b/quickstep/src/com/android/quickstep/views/LauncherLayoutListener.java
index c12a579..8ec5361 100644
--- a/quickstep/src/com/android/quickstep/views/LauncherLayoutListener.java
+++ b/quickstep/src/com/android/quickstep/views/LauncherLayoutListener.java
@@ -43,6 +43,7 @@
private final Paint mPaint = new Paint();
private WindowTransformSwipeHandler mHandler;
private RectF mCurrentRect;
+ private float mCornerRadius;
public LauncherLayoutListener(Launcher launcher) {
super(launcher, null);
@@ -52,13 +53,15 @@
}
@Override
- public void update(boolean shouldFinish, boolean isLongSwipe, RectF currentRect) {
+ public void update(boolean shouldFinish, boolean isLongSwipe, RectF currentRect,
+ float cornerRadius) {
if (shouldFinish) {
finish();
return;
}
mCurrentRect = currentRect;
+ mCornerRadius = cornerRadius;
setWillNotDraw(mCurrentRect == null || isLongSwipe);
invalidate();
@@ -121,6 +124,6 @@
@Override
protected void onDraw(Canvas canvas) {
- canvas.drawRect(mCurrentRect, mPaint);
+ canvas.drawRoundRect(mCurrentRect, mCornerRadius, mCornerRadius, mPaint);
}
}